Thanks to visit codestin.com
Credit goes to github.com

Skip to content

ci: workflow-driven CalVer release for the extension#17

Merged
twschiller merged 2 commits into
mainfrom
ci/calver-release-workflow
May 30, 2026
Merged

ci: workflow-driven CalVer release for the extension#17
twschiller merged 2 commits into
mainfrom
ci/calver-release-workflow

Conversation

@twschiller

Copy link
Copy Markdown
Contributor

Summary

  • Switches .github/workflows/release-extension.yml from release: published (build-on-tag) to workflow_dispatch (workflow creates the release). CI computes version = YYYY.M.D.${{ github.run_number }}, jq-patches extension/src/manifest.json in the runner, builds, uploads to S3, and calls gh release create itself.
  • The source extension/src/manifest.json version (0.1.0) is now a permanent dev placeholder for unpacked loads — CI overwrites it. No manual version bump is needed to cut a release.
  • Adds scripts/cut-release.sh for dispatching the workflow from a clean main (preflights gh auth, branch, dirty tree, sync with origin; --watch tails the run).
  • Adds skills/agent-browser-shield-release/SKILL.md covering the version format, the cut-release flow, and rollback (re-dispatch on an older SHA).

Why CalVer + run_number

  • Chrome compares manifest.version numerically segment-by-segment with a 4-segment max. 2026.6.1 > 2026.5.31 and 2026.5.30.43 > 2026.5.30.42 both hold.
  • github.run_number is monotonic per-repo and never resets, so every release is guaranteed to look newer than the previous one — including multiple same-day releases.
  • Run numbers are only knowable at workflow time, which is why the workflow has to create the release rather than react to a hand-cut tag.

Test plan

  • Merge, then run scripts/cut-release.sh --watch from a clean main and confirm the workflow:
    • Computes a version of the form YYYY.M.D.<run_number> and the matching v… tag.
    • Patches extension/src/manifest.json (visible in the "Patch manifest version" step log via the trailing jq '{version, name}').
    • Uploads ZIPs to s3://agent-browser-shield/${tag}/extension.zip and s3://agent-browser-shield/latest/extension.zip.
    • Creates a GitHub Release at the workflow's GITHUB_SHA with the ZIP attached and auto-generated notes.
  • Unzip the published artifact and confirm manifest.json version matches the tag (minus the v prefix).
  • Load the unzipped extension in Chrome at chrome://extensions and confirm the displayed version matches.
  • Re-run scripts/cut-release.sh immediately and confirm the second release gets a higher run_number segment, and Chrome treats it as an update.

🤖 Generated with Claude Code

The release workflow now owns version assignment instead of verifying a
hand-edited manifest version against the tag. It computes
YYYY.M.D.<github.run_number>, patches extension/src/manifest.json in CI,
builds, uploads to S3, and creates the GitHub Release itself — so every
release gets a strictly-increasing version that Chrome's auto-update
recognizes, with no manual version bump in the source tree.

Adds scripts/cut-release.sh for dispatching the workflow from a clean
main, and skills/agent-browser-shield-release/SKILL.md documenting the
flow.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
@vercel

vercel Bot commented May 30, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
agent-browser-shield-demo-site Ready Ready Preview, Comment May 30, 2026 5:03pm

Request Review

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
@twschiller twschiller merged commit 23d094d into main May 30, 2026
7 checks passed
@twschiller twschiller deleted the ci/calver-release-workflow branch May 30, 2026 17:04
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.

1 participant