Repository navigation
ci: migrate release workflow to changesets/action v2 - #316
Merged
Merged
Conversation
changesets/action v2 refuses to run against @changesets/cli 2.x. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
raviships
marked this pull request as ready for review
October 24, 2026 03:00
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
This branch was successfully deployed
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.
Summary
This replaces Dependabot PR #314 (closed), which only bumped the pin.
changesets/actionv2 renamed the inputs and outputs thatrelease.ymluses. It also refuses to start when@changesets/cli2.x is installed (validateChangesetsCliVersioninsrc/utils.ts), so this PR upgrades the CLI as well. Without that, every release run would fail at startup.Commit 1:
chore: upgrade Changesets CLI to v3@changesets/cli2.31.1 → 3.0.3,@changesets/changelog-github0.7.0 → 1.0.1..changeset/config.json$schema→@changesets/config@4.0.1. The oldconfig@3.2.0URL returns a 404.Commit 2:
ci: migrate release workflow to changesets/action v2, in thereleaseandmaintenancejobs:published-packages(v1:publishedPackages) throughenv:instead of inlining${{ }}in the script.GITHUB_TOKENenv removed. v2 reads only thegithub-tokeninput, which defaults togithub.token, the same token as before. The action passes it asGITHUB_TOKENto the version and publish scripts, sochangelog-githubstill gets a token.NPM_TOKEN: ''removed. v2 dropped its.npmrcwriting (Remove npm auth handling in favor of docs changesets/action#695), and nothing in v2.1.2 or CLI 3.0.3 readsNPM_TOKEN. npm auth still uses OIDC: CLI v2 and v3 both publish withpnpm publish.What changes in practice
github-actions[bot], unsigned@changesets/ghcommit), so it is signed by GitHub and shows Verified. Author is stillgithub-actions[bot]. Still force-updateschangeset-release/<branch>.changeset publish, pushed with git@edgestore/<pkg>@<version>names. A tag that fails to create now logs a warning instead of failing the run.create-github-releasesdefaults totrue, which forcespush-git-tags)CHANGESETS_OUTPUTfile.pnpm run release→changeset publishinherits that env var.setup-git-userinputgithub-actions[bot]only when no identity is configured, which is the case hereGITHUB_TOKENtrigger no workflowssdk,shared). Lists are formatted tight.pre.json.changeset/pre/.pre.jsonkeepsmodeandtag, so thejqchecks inrelease.yml,start-rc.ymlandpromote-next.ymlstill work.nextis dormant, so nothing needs migrating.changeset versionwith no changesetspre exit. The canary job requires a changeset anyway (RELEASING.md), so a canary run without one now fails loudly.Other workflows.
promote-next.yml,start-rc.yml,ci.ymlandstorage.ymldon't use the action.promote-next(pre exit+pnpm -s run version) and the canary job call the CLI directly, so they keep theirGITHUB_TOKENenv, whichchangelog-githubneeds.Job split (not done). The v2 README recommends sub-actions to keep
id-token: writeaway from install and build. That would mean three jobs per lane:/select-mode→/version, or/pack(build, no OIDC) →/publish(OIDC +contents: writefor tags and releases), with artifacts passed between them. Both thereleaseandmaintenancelanes would need it, and the maintenance dist-tag checks would move into the publish job. The npm trusted publisher keys onrelease.ymland would stay valid. It's a reasonable follow-up, but it isn't a simple change, so I kept the current structure.Evidence
v2.1.2→ annotated tag object66d7d1dd→ commitae32849d5ba541f9ae29e40e22a623bc13562f51. That commit is the head of the action'sv2release branch and is the same SHA Dependabot proposed in chore(deps): bump changesets/action from 1.9.0 to 2.1.2 #314. All inputs, outputs and behavior described above were checked against the v2.1.2 source (action.yml,src/index.ts,src/run.ts,src/github.ts,src/utils.ts)..github/workflows/*.yml. shellcheck isn't installed, so the shell bodies were not linted. All workflows parse as strict YAML.pnpm -s run versionran in scratch clones oforigin/mainwith real git history, once with CLI 2.31.1 and once with 3.0.3. Both exit 0 and touch the same 29 files as the open Version Packages PR Version Packages #310. The only content differences are changelog formatting:changeset version --snapshot canary+sync-versionson v3 gives0.0.0-canary-20261024025740, the same shape as before.pre enter next→run versiongives1.0.1-next.0, andpre.jsonis{mode, tag}. Therelease.ymlnextcheck and thestart-rcjqtransform both pass.pre exit+run versiongives1.0.1and removespre.json.PUBLISHED_PACKAGESvalue renders the bullet list.pnpm check:dependenciespasses.Can't be verified before merge.
release.ymlruns only on pushes tomain/nextand onworkflow_dispatch, so none of the action's GitHub-side behavior runs in PR CI.mainafter merge runs the version path. Two changesets are pending, so it regenerates PR Version Packages #310 with CLI v3 and commits through the API.published-packagessummary) is exercised only when Version Packages #310 is merged.maintenanceandnextlanes are exercised only when someone uses them.Risk and rollback
Door: Two-way. Reverting restores action v1 and CLI 2. The next run would then force-update
changeset-release/mainagain with the v1 output. Lightweight tags and Releases created in the meantime remain, and they are valid.Blast radius: Publishing of
@edgestore/*to npm, plus Version Packages PRs, tags and Releases. No package source changes, so no Changeset is needed. The lockfile diff is the Changesets dependency tree, plus pnpm re-resolving the astro example's@emnapi/runtimepeer from 1.11.2 to 1.11.3. Both versions were already in the lockfile.Watch on the first runs:
releaserun onmainshould update PR Version Packages #310 with a Verified "Version Packages" commit and add "No changes in this release." undersdkandshared.@edgestore/*@1.0.1tags and Releases should appear;Failed to read changesets outputorFailed to create git tagwarning meanspublishedmay befalse, which skips the summary and the maintenance dist-tag checks.🤖 Generated with Claude Code