Skip to content

ci: add release-please versioning pipeline#5

Merged
McSim85 merged 2 commits into
main-qnfrom
qn/release-please-versioning
May 29, 2026
Merged

ci: add release-please versioning pipeline#5
McSim85 merged 2 commits into
main-qnfrom
qn/release-please-versioning

Conversation

@McSim85
Copy link
Copy Markdown

@McSim85 McSim85 commented May 29, 2026

Is this change upstreamable?

  • No — QuickNode-specific (release tooling, OCI/deploy integration, +qn fork marker). qn/* branch; no upstream PR.

Summary

  • Fixes the stale -V bug. jito-shredstream-proxy -V printed 0.2.13 (from [workspace.package] version) while the release tag was v0.2.14-qn. role_solana substring-matches -V output to detect the deployed version, so the mismatch made Ansible reinstall + restart the proxy on every converge.
  • Adopts release-please to bump the version from conventional commits and keep Cargo.toml in sync with the tag.
  • Version scheme: X.Y.Z+qn — QN-owned semver core + +qn build metadata (precedence-neutral, but marks QN builds). release-please's default strategy preserves +qn across bumps, so no per-release Release-As.
  • Removes release.yml — binaries are built by role_chain_build from the tag, not here.

⚠️ Merge note (bootstrap)

This is the first release-please adoption. Squash-merge with Release-As: 0.2.14+qn in the commit body so the first managed release is exactly 0.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+qn PR (bumps Cargo.toml + Cargo.lock, writes CHANGELOG.md); merging that tags v0.2.14+qn.

Follow-ups (separate repos — required for idempotency)

  • role_solana group_vars/sol_mainnet.yml: jito_shredstream_version: "0.2.14+qn".
  • role_chain_build: update the -qn doc comment; verify + is URL-encoded (%2B) in OCI object keys / download URLs.

Test plan

  • cargo metadata parses the annotated Cargo.toml; release-please-config.json / .release-please-manifest.json valid JSON; release-please.yml valid YAML.
  • Verified out-of-band: Cargo 1.84 accepts +qn through workspace inheritance + --locked (CARGO_PKG_VERSION = 0.2.14+qn); release-please preserves build metadata across bumps.
  • At the generated release PR: confirm it bumps [workspace.package] version and both Cargo.lock entries (jito-shredstream-proxy, jito-protos). Fallback if Cargo.lock isn't updated: add the cargo-workspace plugin.

Note

Medium Risk
Changes how versions and tags are produced and what -V reports, which drives Ansible deploy idempotency via role_solana; misconfiguration could still cause bad releases or repeated restarts.

Overview
Introduces release-please on main-qn so versions bump from squash-merge conventional-commit PR titles, open a release PR, and tag vX.Y.Z+qn without building binaries in GitHub Actions (that stays in role_chain_build).

Workspace version moves to X.Y.Z+qn in Cargo.toml / Cargo.lock (with # x-release-please-version) so jito-shredstream-proxy -V matches what role_solana expects, fixing repeated reinstalls when -V disagreed with release tags. The build workflow now fails CI if the +qn marker 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.

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>
Comment thread .github/workflows/release-please.yml Outdated
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>
@McSim85
Copy link
Copy Markdown
Author

McSim85 commented May 29, 2026

bugbot run

Copy link
Copy Markdown

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

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

✅ 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.

@McSim85 McSim85 merged commit f5e5d31 into main-qn May 29, 2026
3 checks passed
@McSim85 McSim85 deleted the qn/release-please-versioning branch May 29, 2026 17:29
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