Repository navigation
chore(release): adopt release-please for version bumps and CHANGELOG.md - #806
Merged
Merged
Conversation
Replaces the version-bump half of the release process (previously scripts/cut-release.sh) with release-please: it now keeps a continuously open "release PR" with Cargo.toml/Cargo.lock's version bumped and CHANGELOG.md entries drafted from merged PR titles, and publishes the GitHub Release itself once that PR is merged. - release-please-config.json / .release-please-manifest.json: config and current-version bookkeeping. bump-minor-pre-major + bump-patch-for-minor-pre-major reproduce this project's existing pre-1.0 rule (RELEASING.md's "Choosing the version number"): a `!` commit (output-schema-breaking, per CONTRIBUTING.md -- not API-breaking) bumps minor, everything else bumps patch. - .github/workflows/release-please.yml: runs release-please on every push to main. Needs a RELEASE_PLEASE_TOKEN repo secret (a fine-grained PAT) rather than the default GITHUB_TOKEN, documented in RELEASING.md's new "Setting up the release-please token" section -- GITHUB_TOKEN-authored PRs can't trigger the pull_request-based required status check the branch ruleset demands. - CHANGELOG.md: bootstrapped fresh; earlier releases stay on the GitHub Releases page. - scripts/cut-release.sh: removed, superseded by the above. scripts/verify-release.sh is unchanged and is now the one manual step left after a release publishes. - docs/RELEASING.md, docs/CONTRIBUTING.md, scripts/README.md, pr-title-lint.yml comments: updated to match. Fixes #804. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GbC1fdZjJwiGmmjWqTcmJX
Switches release-please.yml to authenticate as the account-wide "brawer-release-bot" GitHub App -- already installed and used the same way by brawer/osmviews, brawer/osmviews-rs and brawer/osmviews-py -- instead of a per-repo fine-grained PAT. An App installation token is minted fresh per run and expires in under an hour, so there's nothing to rotate the way a PAT would need; it also matches the existing pattern across the other repos rather than introducing a new one. - release-please.yml: actions/create-github-app-token mints the token from the RELEASE_PLEASE_APP_CLIENT_ID variable (already set on this repo, same value as the other three) + RELEASE_PLEASE_APP_PRIVATE_KEY secret (still needs to be set -- see docs/RELEASING.md). Guarded by `if: vars.RELEASE_PLEASE_APP_CLIENT_ID != ''` so it skips rather than fails until that's done. - docs/RELEASING.md: "Setting up the release-please token" -> "Setting up the release-please App", rewritten for the App flow. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GbC1fdZjJwiGmmjWqTcmJX
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.
What
Implements #804: replaces the version-bump half of the release process
(
scripts/cut-release.sh) with release-please,per the decision on that issue —
!stays output-schema-breaking here(
conflated.parquet), not API-breaking, exactly asCONTRIBUTING.mdalready documents.
release-please-config.json/.release-please-manifest.json—bump-minor-pre-major+bump-patch-for-minor-pre-majorreproducethis project's existing pre-1.0 rule from
RELEASING.md's "Choosingthe version number" exactly: a
!commit bumps minor, everythingelse (
feat:,fix:,chore:, ...) bumps patch. There's no gap herepre-1.0 — see the new "How release-please's version bumps map to this
rule" section in
RELEASING.md..github/workflows/release-please.yml— runs on every push tomain; keeps one release PR open, then tags + publishes the releaseonce that PR is merged (a human still does the merging — no
automerge). Authenticates as the account-wide
brawer-release-botGitHub App (already used the same way by
osmviews/osmviews-rs/osmviews-py) rather than a PAT — see below.CHANGELOG.md— bootstrapped fresh from here forward; earlierreleases stay on the Releases page.
scripts/cut-release.shremoved — its only remaining job(verification) is
scripts/verify-release.sh, unchanged, still run byhand after a release publishes.
docs/RELEASING.md,docs/CONTRIBUTING.md,scripts/README.md,pr-title-lint.ymlcomments updated to match.The workflow needs a real identity, not the default
GITHUB_TOKEN—GitHub deliberately blocks a
GITHUB_TOKEN-authored PR from triggeringfurther workflow runs (anti-recursion), so
test.yml'spull_request-triggered required check would never run against therelease PR, and it could never clear the branch ruleset to be merged.
Rather than a new PAT, this reuses
brawer-release-bot, the Appalready installed on your other three repos. The
RELEASE_PLEASE_APP_CLIENT_IDrepo variable is already set (same value as the other repos). Still
needed, both one-time, documented in
RELEASING.md's "Setting up therelease-please App":
brawer/osmdiffsto itsrepositories.
once) and set it as the
RELEASE_PLEASE_APP_PRIVATE_KEYsecret here:Until both exist, the workflow guards itself with
if: vars.RELEASE_PLEASE_APP_CLIENT_ID != ''and simply skips ratherthan failing on every push to
main.Other things worth double-checking once the first release PR appears
required_signaturesruleset) — App-authenticated commits made viathe GitHub API, not
git push, are auto-signed by GitHub, the sameway Dependabot's commits already pass this; should just work the same
way it evidently already does for the
osmviewsrepos, but worth aglance the first time.
treatment as before (it should — same underlying
gh/API tag +release mechanism).
Not changed
.github/release.yml— kept as a fallback for GitHub's ownauto-generated notes (
gh release create --generate-notes), no longerthe primary changelog. Low cost to keep, and there's no reason to
force a same-PR decision on it.
pr-title-lint.yml's auto-label job — still labels PRs from theirtitle; still useful for that fallback and for the GitHub UI generally,
even though release-please reads PR titles directly rather than these
labels.
🤖 Generated with Claude Code
https://claude.ai/code/session_01GbC1fdZjJwiGmmjWqTcmJX