Repository navigation
ci: show a release summary and supersede unapproved release runs - #351
Merged
Merged
Conversation
mogery
approved these changes
Oct 26, 2026
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.
Adds a
Release summaryjob to Publish to npm and Release Binaries that runs after the version check and before the environment-gated job, so whoever approves the release sees on the run page what approving ships. It runs under the same condition as the gated job. Publish to npm gains aversionoutput on the build job for this.The job uses the default
GITHUB_TOKENwithcontents,actionsandpull-requestsread only. Every step iscontinue-on-errorand the summary step has a 3 minute timeout, so a failed or slow summary never holds up a release. No environments, secrets or protection rules change.The summary comes from a local composite action,
.github/actions/release-summary. It shows:Supersede release runs still waiting for approval
A run held at the environment approval used to sit there until someone approved or cancelled it. In firecrawl-mcp-service it also blocked every newer run behind a workflow-level concurrency group. Elsewhere it stayed approvable after newer releases went out, so approving it would publish an older build.
Supersede unapproved runsjob runs under the same condition as the gated job. It cancels earlier runs of the same workflow on the same branch, but only when the earlier run's status iswaiting, meaning held at the approval, and the compare API shows this run's commit includes it. The status is read again just before cancelling, so a run that has been approved and started publishing is left alone.${{ github.workflow }}-release-${{ github.ref }},cancel-in-progress: false). Two publishes never overlap, a publish already running is never cancelled, and a newer pending job replaces an older pending one.This job holds
actions: write(for cancelling) andcontents: read, and every step iscontinue-on-error, so it can never block a release. No environments or protection rules change.actionlint passes on the changed workflows. The job only runs on pushes to the release branch, so it first shows on a real run with the next release. The render below is the script run locally against live run history and the current
main.Release Binaries, from current main
Release summary
Approving Create release and upload assets publishes the version below from this commit.
v1.26.2339783b7a4dchore(release): bump version to 1.26.23 (#350)1b8a04f1c5(tag v1.26.22), released in run 39831272831Merged pull requests (5)
Publish to npm, from current main
Release summary
Approving publish publishes the version below from this commit.
firecrawl-cli@1.26.23 (npm tag latest)39783b7a4dchore(release): bump version to 1.26.23 (#350)1b8a04f1c5(tag v1.26.22), released in run 39831272837Merged pull requests (5)