ci: add release-please versioning pipeline#5
Merged
Conversation
The binary's `-V` output drifted from the release tag: clap reads CARGO_PKG_VERSION from [workspace.package] version in Cargo.toml, which hand-made tags never updated. role_solana substring-matches `-V` output to detect the deployed version, so the mismatch made Ansible reinstall and restart the proxy on every converge. Adopt release-please to drive versioning from conventional commits and keep Cargo.toml in sync with the tag. Versions are X.Y.Z+qn: a QN-owned semver line with a +qn build-metadata marker (precedence-neutral per semver, but identifies QN builds). release-please's default strategy preserves +qn across bumps, so no per-release Release-As is needed. - release-please-config.json / .release-please-manifest.json: rust type (Cargo.lock + CHANGELOG), generic extra-files updater for the [workspace.package] version (rust type alone doesn't update it in a virtual workspace; see release-please#1170). - .github/workflows/release-please.yml: manages the release PR, tag, and GitHub Release on pushes to main-qn. No build step — role_chain_build builds from the tag. - Remove release.yml: building is role_chain_build's job, and its GITHUB_TOKEN-created tags wouldn't have triggered it anyway. - Document the scheme and conventional-commit PR titles. Bootstrap the first managed release to 0.2.14+qn via the footer below. Release-As: 0.2.14+qn Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Address PR review concern that release-please might strip the +qn build metadata on bumps. Verified empirically against release-please 17.6.1 that the default strategy preserves it (fix -> 0.2.15+qn, feat -> 0.3.0+qn, feat! -> 1.0.0+qn): each VersionUpdater re-emits version.build and Version.toString() appends it. The maintainer statement cited in review (release-please#1816) is about auto-generating/incrementing a build number, not about preserving a constant marker — a different feature. Preservation isn't an officially-tested contract, so guard against a future regression instead of relying on it silently: - build.yml: assert [workspace.package] version still carries +qn; the release PR (a pull_request) fails CI loudly if it's ever stripped, rather than shipping a bare version that breaks role_solana's -V substring check. - Seed Cargo.toml + Cargo.lock + manifest at 0.2.13+qn so the marker is present from the start and the guard holds on every PR. - Document the verified behavior and the #1816 distinction. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Author
|
bugbot run |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit efce9ec. Configure here.
qk-santi
approved these changes
May 29, 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.
Is this change upstreamable?
+qnfork marker).qn/*branch; no upstream PR.Summary
-Vbug.jito-shredstream-proxy -Vprinted0.2.13(from[workspace.package] version) while the release tag wasv0.2.14-qn.role_solanasubstring-matches-Voutput to detect the deployed version, so the mismatch made Ansible reinstall + restart the proxy on every converge.Cargo.tomlin sync with the tag.X.Y.Z+qn— QN-owned semver core ++qnbuild metadata (precedence-neutral, but marks QN builds). release-please's default strategy preserves+qnacross bumps, so no per-releaseRelease-As.release.yml— binaries are built byrole_chain_buildfrom the tag, not here.This is the first release-please adoption. Squash-merge with
Release-As: 0.2.14+qnin the commit body so the first managed release is exactly0.2.14+qn. The PR's own commit already carries that footer; if GitHub's squash UI drops it, paste it back into the squash commit message.After merge: release-please opens a
chore: release 0.2.14+qnPR (bumpsCargo.toml+Cargo.lock, writesCHANGELOG.md); merging that tagsv0.2.14+qn.Follow-ups (separate repos — required for idempotency)
role_solanagroup_vars/sol_mainnet.yml:jito_shredstream_version: "0.2.14+qn".role_chain_build: update the-qndoc comment; verify+is URL-encoded (%2B) in OCI object keys / download URLs.Test plan
cargo metadataparses the annotatedCargo.toml;release-please-config.json/.release-please-manifest.jsonvalid JSON;release-please.ymlvalid YAML.+qnthrough workspace inheritance +--locked(CARGO_PKG_VERSION=0.2.14+qn); release-please preserves build metadata across bumps.[workspace.package] versionand bothCargo.lockentries (jito-shredstream-proxy,jito-protos). Fallback ifCargo.lockisn't updated: add thecargo-workspaceplugin.Note
Medium Risk
Changes how versions and tags are produced and what
-Vreports, which drives Ansible deploy idempotency via role_solana; misconfiguration could still cause bad releases or repeated restarts.Overview
Introduces release-please on
main-qnso versions bump from squash-merge conventional-commit PR titles, open a release PR, and tagvX.Y.Z+qnwithout building binaries in GitHub Actions (that stays inrole_chain_build).Workspace version moves to
X.Y.Z+qninCargo.toml/Cargo.lock(with# x-release-please-version) sojito-shredstream-proxy -Vmatches whatrole_solanaexpects, fixing repeated reinstalls when-Vdisagreed with release tags. Thebuildworkflow now fails CI if the+qnmarker is missing;release.yml(tag-triggered binary + GH asset upload) is removed. Docs and the PR template document the release flow and title requirements.Reviewed by Cursor Bugbot for commit efce9ec. Configure here.