Skip to content

chrome-extension-release: one thin stub + release.config; bump/filter moved into canon - #205

Merged
missingbulb merged 3 commits into
mainfrom
claude/github-actions-consolidation-adpxwo
Jul 9, 2026
Merged

chrome-extension-release: one thin stub + release.config; bump/filter moved into canon#205
missingbulb merged 3 commits into
mainfrom
claude/github-actions-consolidation-adpxwo

Conversation

@missingbulb

Copy link
Copy Markdown
Owner

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-config composite 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 as with: inputs, so the stub passes none. A single-package repo on the standard layout needs no config file at all.
  • bump-extension-patch composite action — the generic patch-bumper (token-replace the version across manifest_path + package_json_path). Repos no longer ship a bump script.
  • Daily shipped-file filter is now a ship_paths prefix match inside chrome-extension-daily-release.yml. Repos no longer ship a filter script.
  • Reusable workflows rewritten to read config + derive the zip name. Kept: the build_env input (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 one stubs/release.yml: combined triggers (push to main, schedule, workflow_dispatch with a mode) and three if:-guarded jobs calling the three canon reusable workflows.

Checks

  • cer/release-workflows now asserts the single Release stub exists, is named Release, and calls all three canon reusable workflows.
  • Pack detect fingerprints the single stub — a workflow named Release that calls the canon create-package workflow — so Claudinite's own reusable workflows (which reference each other) don't self-match.
  • New cer/release-config rejects unknown/typo'd keys in .github/release.config (a misspelled key would otherwise silently fall back to a default).
  • Test suite updated to the single-stub model; full check suite green (102/102) and self-conformance clean.

Docs

RELEASE.md, the pack README, the corpus index, and conversion-inventory.md updated for the single-stub + config model. Setup now copies one stub verbatim, uses .github/release.config for deviations, and the first-publication tracking issue carries a ready-to-run gh variable set script for any build_env repository 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

… 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
claude added 2 commits July 9, 2026 21:54
…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
missingbulb force-pushed the claude/github-actions-consolidation-adpxwo branch from 817d421 to c995bab Compare July 9, 2026 22:50
@missingbulb
missingbulb merged commit c0260dc into main Jul 9, 2026
1 check passed
@missingbulb
missingbulb deleted the claude/github-actions-consolidation-adpxwo branch July 9, 2026 22:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants