Skip to content

ci: Add release-please and bring CHANGELOG up to date - #247

Merged
matthewelwell merged 2 commits into
mainfrom
chore/add-release-please
Aug 26, 2026
Merged

ci: Add release-please and bring CHANGELOG up to date#247
matthewelwell merged 2 commits into
mainfrom
chore/add-release-please

Conversation

@matthewelwell

@matthewelwell matthewelwell commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

Adopts release-please via github-webhook-handler. Rebased onto main after #248.

⚠️ Merge-order dependency — read first

#248 wrote a ## 0.12.0 section 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 two feat commits since v0.11.0, propose 0.12.0, and prepend a second 0.12.0 section on top of the hand-written one. bootstrap-sha points at the #248 merge for the same reason.

This is safe whether or not you tag v0.12.0 before merging:

  • Tag v0.12.0 first (the intended path) — release-please finds the release, manifest agrees, next feat proposes 0.13.0.
  • Merge this first — release-please finds no commits after bootstrap-sha worth 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.json and .release-please-manifest.json in its root. It also deliberately stands down if it finds a release-please*.yml workflowshould_run_release_please returns (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, pulumi and the handler itself. The other 21 predate the handler's release-please support (May 2026) and the not has_workflow guard is what keeps them working; flagsmith-cli was migrated off its workflow in July. Config matches house style — flagsmith-cli is the closest analogue (release-type: go, same changelog-sections) and ci also carries a bootstrap-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-cli is handler-driven with release.yml on push: tags: ["v*"], and its v2.0.0-beta.1/2/3 runs were all push-triggered from the handler's release commits.

release-type: go means 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 pinned release.mode: keep-existing explicitly 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.

ENHANCEMENTS and NOTES keep their own headings; release-please has no equivalent and mapping them onto Other would 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-major

The 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 to true here 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 accidental feat!: 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, so Build never 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.prefix fixes the PR title and the commit subject — dependabot builds both from the same string (commit_subject derives from pr_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 ./... and go vet ./... pass; both JSON configs parse. goreleaser isn't installed locally so I couldn't run goreleaser check — worth a glance at the .goreleaser.yml change.

@matthewelwell
matthewelwell requested a review from a team as a code owner August 26, 2026 07:52
@matthewelwell
matthewelwell requested review from khvn26 and removed request for a team August 26, 2026 07:52
@coderabbitai

coderabbitai Bot commented Aug 26, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 9c1af178-6ece-4e32-a447-a7734f37769b

📥 Commits

Reviewing files that changed from the base of the PR and between a35a2db and 0bc3973.

📒 Files selected for processing (5)
  • .github/dependabot.yml
  • .goreleaser.yml
  • .release-please-manifest.json
  • CHANGELOG.md
  • release-please-config.json

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

The change configures Dependabot commit prefixes, adds Release Please settings and a 0.12.0 manifest entry, and updates GoReleaser to preserve existing GitHub releases and notes. CHANGELOG.md now uses consistent Markdown release formatting, comparison links, dates, headings, and bullet points for releases from 0.1.0 to 0.12.0.

Estimated code review effort: 2 (Simple) | ~10 minutes

Merge Risk: ⚪ Minimal · up to 0bc39

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@matthewelwell
matthewelwell marked this pull request as draft August 26, 2026 07:58
@matthewelwell
matthewelwell removed the request for review from khvn26 August 26, 2026 07:58
@matthewelwell
matthewelwell force-pushed the chore/add-release-please branch from b62d1d1 to 5b239e8 Compare August 26, 2026 08:08
matthewelwell and others added 2 commits August 26, 2026 14:07
#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>
@matthewelwell
matthewelwell force-pushed the chore/add-release-please branch from 5b239e8 to 0bc3973 Compare August 26, 2026 13:07
@matthewelwell
matthewelwell marked this pull request as ready for review August 26, 2026 13:47
@matthewelwell
matthewelwell merged commit bfe0ce3 into main Aug 26, 2026
9 checks passed
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