chrome-extension-release: one thin stub + release.config; bump/filter moved into canon - #205
Merged
Merged
Conversation
… bump/filter into canon Consolidate the per-repo release footprint from three/four thin workflow stubs to a single copy-verbatim release.yml, and move everything that used to be a per-repo value or script into the canon. Canon: - read-release-config composite action: reads the caller's optional .github/release.config (dotenv, all keys optional) + defaults, derives the zip name from the repo name. The reusable workflows read repo values from it instead of taking them as inputs, so the stub passes none. - bump-extension-patch composite action: the generic patch-bumper (token replace across manifest + package.json). Repos no longer ship a bump script. - Daily shipped-file filter is now a ship_paths prefix match in the daily workflow. Repos no longer ship a filter script. - Reusable workflows rewritten to read config + derive the zip name; keep the build_env input (the one genuinely per-environment value) and failure reporting keyed on the per-operation names. - stubs/: three stubs collapsed to one release.yml (combined triggers + if:-guarded jobs calling the three canon reusable workflows). Checks: - cer/release-workflows now asserts the single Release stub calls all three canon workflows; pack detect fingerprints the single stub (name Release + calls the canon create-package workflow, so the canon repo doesn't self-match). - New cer/release-config rejects unknown/typo'd config keys. - Tests updated; full suite green. Docs: RELEASE.md, pack README, corpus index, conversion-inventory updated; setup now copies one stub, uses release.config, and the first-publication issue carries a gh-variable-set script for any build_env variables. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014caQNaQ2sgNieuM5G7F6dJ
This was referenced Jul 9, 2026
Merged
…ame stub, mandate build Address review: silent defaults that "happen to match" a repo's layout are a drift risk. Make the release config explicit and mandatory instead. - .github/release.config is now REQUIRED with six explicit keys and NO defaults: manifest_path, package_json_path, setup_command, test_command, ship_paths, zip_path. read-release-config fails loudly on a missing file, missing key, or unknown (typo'd) key. - zip asset name is derived as basename(zip_path) — dropped the derive-from- repo-name magic and the separate zip_name. - The build is mandated as `npm run build` (universal across every extension repo), so build_command is no longer a config key. - Rename the consumer stub file release.yml -> chrome-extension-release.yml (descriptive; disambiguates in a monorepo). Display name stays "Release". - cer/release-config now requires the file + all six keys; STUB_FILE updated; tests + RELEASE.md + pack README + conversion-inventory updated. Full check suite green (102/102). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014caQNaQ2sgNieuM5G7F6dJ
…g down to 5 keys Structure like the zip location is not a per-project choice — force it uniform. The zip is now derived to the standard dist/<kebab repo name>.zip for every repo (place + name templated to the repo), so zip_path is no longer a config key. release.config is down to 5 required explicit keys: manifest_path, package_json_path, setup_command, test_command, ship_paths. Build stays the mandated npm run build. Tests + RELEASE.md + README + inventory updated; suite green (102/102). Refs #209
missingbulb
force-pushed
the
claude/github-actions-consolidation-adpxwo
branch
from
July 9, 2026 22:50
817d421 to
c995bab
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What & why
Consolidates the Chrome-extension release pipeline so a consuming repo carries one copy-verbatim workflow stub instead of three/four token-substituted ones, and moves every remaining per-repo value or script into the canon. Motivated by minimizing the per-project definitions: the ~750 lines of pipeline logic already lived once in the canon; this removes the last per-repo wiring.
Canon changes
read-release-configcomposite action — reads the caller's optional.github/release.config(dotenv, every key optional) plus the standard's defaults, and derives the zip name from the repo name. The reusable workflows read repo values from it instead of taking them aswith:inputs, so the stub passes none. A single-package repo on the standard layout needs no config file at all.bump-extension-patchcomposite action — the generic patch-bumper (token-replace the version acrossmanifest_path+package_json_path). Repos no longer ship a bump script.ship_pathsprefix match insidechrome-extension-daily-release.yml. Repos no longer ship a filter script.build_envinput (the one genuinely per-environment value, sourced from repository variables) and the per-operation failure-issue keying (constants inside the canon, so collapsing the caller loses no triage).stubs/— the three stub templates collapse to onestubs/release.yml: combined triggers (push tomain, schedule,workflow_dispatchwith amode) and threeif:-guarded jobs calling the three canon reusable workflows.Checks
cer/release-workflowsnow asserts the singleReleasestub exists, is namedRelease, and calls all three canon reusable workflows.detectfingerprints the single stub — a workflow namedReleasethat calls the canon create-package workflow — so Claudinite's own reusable workflows (which reference each other) don't self-match.cer/release-configrejects unknown/typo'd keys in.github/release.config(a misspelled key would otherwise silently fall back to a default).Docs
RELEASE.md, the packREADME, the corpus index, andconversion-inventory.mdupdated for the single-stub + config model. Setup now copies one stub verbatim, uses.github/release.configfor deviations, and the first-publication tracking issue carries a ready-to-rungh variable setscript for anybuild_envrepository variables.Rollout
The stubs reference the canon
@main, so consuming repos pick up the new reusable-workflow logic automatically once this merges. The consuming-repo PRs (CrosswordChat, TLDR, GoogleCalendarEventCreator) that swap in the single stub + remove the local bump/filter scripts are separate and depend on this landing first.🤖 Generated with Claude Code
Generated by Claude Code