Skip to content

ci(repo): keep production releases running when main moves - #10617

Merged
wobsoriano merged 3 commits into
mainfrom
rob/release-keep-production-runs
Nov 3, 2026
Merged

wobsoriano merged 3 commits into
mainfrom
rob/release-keep-production-runs

Conversation

@wobsoriano

@wobsoriano wobsoriano commented Nov 3, 2026 •

Copy link
Copy Markdown
Member

Description

A merge to main during a production release cancels the release, even in the middle of changeset publish. On Nov 3 that left run 41703272864 half published. For about 22 minutes, @clerk/clerk-js@6.42.2, @clerk/backend@3.26.6 and @clerk/expo@4.15.0 were on latest and depended on a @clerk/shared@4.44.0 that wasn't on npm yet.

GitHub uses the cancel-in-progress value of the newer run. Canary pushes now set it to false, so they wait for a running release instead of cancelling it. Version packages pushes and snapshot runs still cancel. A newer canary still replaces an older pending one, so a burst of merges queues one canary, not one per merge.

The release script now runs git push origin --tags instead of git push --follow-tags. --follow-tags also pushes main, which has no new commits after publish and gets rejected if anyone merged during the release. The cancellation used to hide that. With the concurrency change, the Oct 13 and Nov 3 releases would both have published and then failed here. The tags still go up before scripts/wait-for-packages-on-npm.mjs runs, so a timeout there doesn't lose them.

🤖 Generated with Claude under Rob's supervision.

Checklist

  • pnpm test runs as expected.
  • pnpm build runs as expected.
  • (If applicable) JSDoc comments have been added or updated for any package exports
  • (If applicable) Documentation has been updated

Type of change

  • 🐛 Bug fix
  • 🌟 New feature
  • 🔨 Breaking change
  • 📖 Refactoring / dependency upgrade / documentation
  • other:

A merge to main during a production release cancelled the run in the
middle of changeset publish, which left half the packages on npm.
Canary pushes now queue behind an in-progress run instead of
cancelling it. Version packages pushes and snapshot runs still cancel.

The release script no longer pushes main after publish. changeset
publish creates tags only, and changesets/action pushes each tag
itself. The push failed with a non-fast-forward error on any re-run
after main had moved.
@changeset-bot

changeset-bot Bot commented Nov 3, 2026 •

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 9ae5e6b

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 0 packages

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@vercel

vercel Bot commented Nov 3, 2026 •

Copy link
Copy Markdown

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

Project Deployment Actions Updated
clerk-js-sandbox Ready Ready Preview Nov 3, 2026 10:10pm UTC
swingset Ready Ready Preview Nov 3, 2026 10:10pm UTC

Request Review

@coderabbitai

coderabbitai Bot commented Nov 3, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review.

Walkthrough

The release workflow now cancels an in-progress run only for non-push events or pushes whose head commit message contains Version packages. The release script now pushes tags with git push origin --tags. The changeset file contains empty YAML frontmatter and no release-note body.

Estimated code review effort: 2 (Simple) | ~8 minutes

Suggested reviewers: ephem, dominic-clerk, seanperez29

Merge Risk: Minimal · up to 9ae5e

No concrete merge-blocking risk was established in the release workflow or tag-publishing changes.

Pre-merge checks: Passed 4
Check name Status Explanation
Title check Passed The title clearly identifies the main change: preventing in-progress production releases from being canceled when main moves.
Description check Passed The description directly explains the release cancellation problem and the workflow and tag-push changes that address it.
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Warning

Linked repositories: Some configured repositories could not be included in this review. Cross-repository analysis may be incomplete. Please check linked-repository access and settings.

CodeRabbit Verify

  • Run CodeRabbit Verify to test the changes in this pull request.
Recent review info
Run configuration
Commits

Reviewing files that changed from the base of the PR and between 86bdfb5 and 9ae5e6b.

Files selected for processing: 3
  • .changeset/release-keep-production-runs.md
  • .github/workflows/release.yml
  • package.json
Linked repositories identified

CodeRabbit considers these linked repositories for cross-repo context during reviews:

Included review availability: This review used your included allowance. 9 included reviews remain after this review. Your included PR review attempts over the past 7 days set your current allowance at 10 reviews per hour.

@pkg-pr-new

pkg-pr-new Bot commented Nov 3, 2026 •

Copy link
Copy Markdown

Open in StackBlitz

@clerk/astro

npm i https://pkg.pr.new/@clerk/astro@10617

@clerk/backend

npm i https://pkg.pr.new/@clerk/backend@10617

@clerk/chrome-extension

npm i https://pkg.pr.new/@clerk/chrome-extension@10617

@clerk/clerk-js

npm i https://pkg.pr.new/@clerk/clerk-js@10617

@clerk/electron

npm i https://pkg.pr.new/@clerk/electron@10617

@clerk/electron-passkeys

npm i https://pkg.pr.new/@clerk/electron-passkeys@10617

@clerk/eslint-plugin

npm i https://pkg.pr.new/@clerk/eslint-plugin@10617

@clerk/expo

npm i https://pkg.pr.new/@clerk/expo@10617

@clerk/expo-biometrics

npm i https://pkg.pr.new/@clerk/expo-biometrics@10617

@clerk/expo-google-signin

npm i https://pkg.pr.new/@clerk/expo-google-signin@10617

@clerk/expo-native-components

npm i https://pkg.pr.new/@clerk/expo-native-components@10617

@clerk/expo-passkeys

npm i https://pkg.pr.new/@clerk/expo-passkeys@10617

@clerk/express

npm i https://pkg.pr.new/@clerk/express@10617

@clerk/fastify

npm i https://pkg.pr.new/@clerk/fastify@10617

@clerk/hono

npm i https://pkg.pr.new/@clerk/hono@10617

@clerk/localizations

npm i https://pkg.pr.new/@clerk/localizations@10617

@clerk/mosaic

npm i https://pkg.pr.new/@clerk/mosaic@10617

@clerk/nextjs

npm i https://pkg.pr.new/@clerk/nextjs@10617

@clerk/nuxt

npm i https://pkg.pr.new/@clerk/nuxt@10617

@clerk/react

npm i https://pkg.pr.new/@clerk/react@10617

@clerk/react-router

npm i https://pkg.pr.new/@clerk/react-router@10617

@clerk/shared

npm i https://pkg.pr.new/@clerk/shared@10617

@clerk/tanstack-react-start

npm i https://pkg.pr.new/@clerk/tanstack-react-start@10617

@clerk/testing

npm i https://pkg.pr.new/@clerk/testing@10617

@clerk/ui

npm i https://pkg.pr.new/@clerk/ui@10617

@clerk/upgrade

npm i https://pkg.pr.new/@clerk/upgrade@10617

@clerk/vue

npm i https://pkg.pr.new/@clerk/vue@10617

commit: 9ae5e6b

The npm wait runs after the tag push and can time out. changesets/action
pushes tags only when the whole release command succeeds, so dropping the
push would lose the tags in that case.
@blacksmith-sh

blacksmith-sh Bot commented Nov 3, 2026 •

Copy link
Copy Markdown

Matches Canary push no longer cancels a running release

Evaluated with GitHub's expression library: a canary push to main now gets cancel-in-progress false (was true), while Version packages pushes, !snapshot comments and snapshot dispatches still get true. Not run on GitHub itself.

Merge-base

Canary push before

This PR 9ae5e6b9

Canary push after

All run types after

Also checked · 1 match · 1 not run

Skipped Newer canary replaces older pending one · Skipped
Matches Tags pushed when main moved mid-release

Proof on 9ae5e6b9 · Did Proof get it right? Yes · No

View full Proof report

@wobsoriano
wobsoriano merged commit dc4b2e2 into main Nov 3, 2026
59 checks passed
@wobsoriano
wobsoriano deleted the rob/release-keep-production-runs branch November 3, 2026 22:31

This branch was successfully deployed

2 active deployments
Preview – swingset — 9ae5e6b9 Deployed Nov 3, 2026 by vercel[bot]
Preview – clerk-js-sandbox — 9ae5e6b9 Deployed Nov 3, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants