Skip to content

ci(release): publish stable releases from version bumps#204

Open
Abhijeet Prasad (AbhiPrasad) wants to merge 1 commit into
mainfrom
abhi-ci-stable-release-workflow
Open

ci(release): publish stable releases from version bumps#204
Abhijeet Prasad (AbhiPrasad) wants to merge 1 commit into
mainfrom
abhi-ci-stable-release-workflow

Conversation

@AbhiPrasad
Copy link
Copy Markdown
Member

Replace the separate tag-on-version-bump workflow with a single stable release flow driven by Cargo.toml changes on main. Operators prepare a release by running release-bump-pr with the target semver version, which opens or updates a PR that changes Cargo.toml and Cargo.lock. When that PR merges, the release workflow reads the new Cargo.toml version, creates and pushes the matching v.. tag if it does not already exist, then uses cargo-dist to plan and build the release artifacts.

Publishing is gated behind the release GitHub Environment. The workflow builds artifacts before requesting approval, then only uploads the artifacts, creates the GitHub Release, and publishes installers after the deployment is approved. Manual release dispatch still supports publishing an existing semver tag directly.

The minimal smoke-install workflow now consumes the resolved release tag from a release-metadata artifact emitted by the release workflow. This keeps post-release smoke tests aligned with the exact tag the release used, including manually dispatched releases where the workflow_run branch can still be main.

Document the stable release process in CONTRIBUTING so the expected operator flow is clear.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 22, 2026

Latest downloadable build artifacts for this PR commit 80de68554ae2:

Available artifact names
  • ``artifacts-build-global
  • ``artifacts-build-local-x86_64-apple-darwin
  • ``artifacts-build-local-x86_64-pc-windows-msvc
  • ``artifacts-build-local-aarch64-pc-windows-msvc
  • ``artifacts-build-local-x86_64-unknown-linux-musl
  • ``artifacts-build-local-x86_64-unknown-linux-gnu
  • ``artifacts-build-local-aarch64-apple-darwin
  • ``artifacts-build-local-aarch64-unknown-linux-gnu
  • ``artifacts-plan-dist-manifest
  • ``cargo-dist-cache

Comment thread .github/workflows/release-bump-pr.yml Outdated
raise SystemExit("failed to find version in Cargo.toml")
cargo_toml.write_text("".join(lines))

cargo_lock = Path("Cargo.lock")
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We could use cargo update --workspace --offline instead of parsing the Cargo.lock toml.
From the cargo update doc:
--workspace
Attempt to update only packages defined in the workspace. Other packages are updated only if they don’t already exist in the lockfile. This option is useful for updating Cargo.lock after you’ve changed version numbers in Cargo.toml.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good call, just did that and pushed it up

Replace the separate tag-on-version-bump workflow with a single stable
release flow driven by Cargo.toml changes on main. Operators prepare a
release by running release-bump-pr with the target semver version, which
opens or updates a PR that changes Cargo.toml and Cargo.lock. When that PR
merges, the release workflow reads the new Cargo.toml version, creates and
pushes the matching v<major>.<minor>.<patch> tag if it does not already
exist, then uses cargo-dist to plan and build the release artifacts.

Publishing is gated behind the release GitHub Environment. The workflow
builds artifacts before requesting approval, then only uploads the artifacts,
creates the GitHub Release, and publishes installers after the deployment is
approved. Manual release dispatch still supports publishing an existing
semver tag directly.

The minimal smoke-install workflow now consumes the resolved release tag
from a release-metadata artifact emitted by the release workflow. This keeps
post-release smoke tests aligned with the exact tag the release used,
including manually dispatched releases where the workflow_run branch can
still be main.

Document the stable release process in CONTRIBUTING so the expected
operator flow is clear.
@AbhiPrasad Abhijeet Prasad (AbhiPrasad) force-pushed the abhi-ci-stable-release-workflow branch from d15a937 to 80de685 Compare May 22, 2026 17:54
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unless we actively try to break things this should be good.

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