ci: Add release-please and bring CHANGELOG up to date - #247
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (5)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. 📝 WalkthroughWalkthroughThe change configures Dependabot commit prefixes, adds Release Please settings and a Estimated code review effort: 2 (Simple) | ~10 minutes Merge Risk: ⚪ Minimal · up to This change adds release automation and updates release metadata without any identified merge-blocking issue; it is merge-ready after normal checks and review. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
b62d1d1 to
5b239e8
Compare
#248 brought the content up to date, so this is now purely a formatting change: convert every entry onto the headings release-please emits, so what it appends from here reads as one document. Bullet text is copied verbatim -- only headings, dates and compare links change. The three bare "fix https://..." lines under 0.5.1, 0.7.0 and 0.8.1 become bullets, same text. ENHANCEMENTS and NOTES keep their own headings rather than being forced into a release-please section that would change what they mean. 0.12.0 is dated 2026-08-26, the day #248 merged. It is not tagged yet, so correct the date if the release lands on another day. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Releases were cut by hand-pushing a v* tag. Adopt release-please so the tag and release notes come from a release PR instead. No workflow: github-webhook-handler runs release-please itself on every push to the default branch, for any repo with both config files in its root. It deliberately stands down if it finds a .github/workflows/release-please*.yml (see should_run_release_please), so adding one would opt this repo out of the org mechanism rather than complement it. The flagship repos are all config-only; flagsmith-cli was migrated off its workflow in July. The handler tags using a GitHub App installation token, which does trigger workflows, so the existing goreleaser run still fires on the tag push -- flagsmith-cli releases the same way. goreleaser's release.mode is pinned to keep-existing so it attaches artifacts to the release the handler has already created rather than overwriting its notes. The manifest starts at 0.12.0, not 0.11.0, because #248 already wrote a 0.12.0 section by hand. Starting at 0.11.0 would have release-please propose 0.12.0 again and prepend a second section for it. bootstrap-sha points at that merge for the same reason. bump-minor-pre-major deviates from the value the other repos carry. They are all past 1.0.0, so it is inert for them; here it decides whether a breaking change bumps 0.12.0 to 0.13.0 or to 1.0.0. Every pre-1.0 breaking change in this provider so far (0.2.0, 0.3.0, 0.4.0) took the minor, and a Terraform registry version cannot be unpublished, so prefer the minor until 1.0.0 is a deliberate decision. Dependabot commits land as "Build(deps):", which fails the org PR title check outright (its regex requires a lowercase type) and is not a conventional commit type, so it would be dropped from the changelog. Set the prefix to "deps" to match the changelog-sections config. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
5b239e8 to
0bc3973
Compare
Adopts release-please via github-webhook-handler. Rebased onto main after #248.
#248 wrote a
## 0.12.0section by hand, and v0.12.0 is not tagged yet. So the manifest starts at 0.12.0, not 0.11.0. Starting at 0.11.0 would have release-please see the twofeatcommits since v0.11.0, propose 0.12.0, and prepend a second 0.12.0 section on top of the hand-written one.bootstrap-shapoints at the #248 merge for the same reason.This is safe whether or not you tag v0.12.0 before merging:
featproposes 0.13.0.bootstrap-shaworth releasing and sits idle until the next real change. No duplicate either way.What it is not safe against is someone resetting the manifest to 0.11.0 to "match the last tag". That is the one change that reintroduces the duplicate.
No workflow — the handler does this
The handler runs release-please itself on every push to a repo's default branch, for any repo with
release-please-config.jsonand.release-please-manifest.jsonin its root. It also deliberately stands down if it finds arelease-please*.ymlworkflow —should_run_release_pleasereturns(has_config and has_manifest) and not has_workflow. An earlier revision of this PR added a workflow, which would have opted this repo out of the org mechanism rather than complemented it. Now config-only.12 of the 33 org repos with release-please config are handler-driven, including
flagsmith,edge-api,ci,pulumiand the handler itself. The other 21 predate the handler's release-please support (May 2026) and thenot has_workflowguard is what keeps them working;flagsmith-cliwas migrated off its workflow in July. Config matches house style —flagsmith-cliis the closest analogue (release-type: go, samechangelog-sections) andcialso carries abootstrap-sha.goreleaser still fires
The handler tags using a GitHub App installation token, not
GITHUB_TOKEN, so the tag push does trigger workflows. Verified rather than assumed:flagsmith-cliis handler-driven withrelease.ymlonpush: tags: ["v*"], and itsv2.0.0-beta.1/2/3runs were allpush-triggered from the handler's release commits.release-type: gomeans changelog and tag only — no version file to bump, since goreleaser injects the version from the tag via ldflags.The handler creates the GitHub release, then goreleaser fires on the tag and wants one too. goreleaser's default is already
keep-existing, so it attaches artifacts and leaves the notes alone; I've pinnedrelease.mode: keep-existingexplicitly rather than leave a silent dependency on a default.CHANGELOG — now purely a reformat
#248 brought the content up to date, so this no longer backfills anything. It only converts the existing entries onto the headings release-please emits. Bullet text is copied verbatim — checked mechanically, all 61 bullets on main are byte-identical here. The only textual change is that the three bare
fix https://...lines under 0.5.1, 0.7.0 and 0.8.1 become bullets, same text.ENHANCEMENTSandNOTESkeep their own headings; release-please has no equivalent and mapping them ontoOtherwould change what they say.0.12.0 is dated 2026-08-26, the day #248 merged, since it isn't tagged yet. One line to correct if the release lands on a different day.
Deliberate deviation:
bump-minor-pre-majorThe other repos carry
false. They are all past 1.0.0, so it is inert for them. This provider is at 0.12.0, where it decides whether a breaking change bumps to 0.13.0 or 1.0.0. Set totruehere so breaking changes take the minor: every pre-1.0 breaking change in this provider (0.2.0, 0.3.0, 0.4.0) took the minor, and a Terraform registry version cannot be unpublished, so an accidentalfeat!:promoting the provider to 1.0.0 is not walkable-back. One-line flip if you'd rather match.Dependabot
Bumps land as
Build(deps):, which fails the org PR title check — its regex requires a lowercase type, soBuildnever even reaches the allowed-types list. I confirmed this by running the handler's own validator:Build(deps): Bump ...→ failure,deps: Bump ...→ success. That is why these PRs were being renamed by hand (#241 kept the original title, #242 was renamed).commit-message.prefixfixes the PR title and the commit subject — dependabot builds both from the same string (commit_subjectderives frompr_name). Also needed for the changelog:Build(deps):isn't a conventional type, so every dependency update would have been dropped. Note that single-commit dependabot PRs squash using the commit message, so the broken prefix is what lands on main regardless of a renamed title.Verification
go build ./...andgo vet ./...pass; both JSON configs parse. goreleaser isn't installed locally so I couldn't rungoreleaser check— worth a glance at the.goreleaser.ymlchange.