Skip to content

ci: automate releases with release-please#71

Merged
mledour merged 2 commits into
mainfrom
ci/release-please
Jun 22, 2026
Merged

ci: automate releases with release-please#71
mledour merged 2 commits into
mainfrom
ci/release-please

Conversation

@mledour

@mledour mledour commented Jun 22, 2026

Copy link
Copy Markdown
Owner

What

Integrates release-please so releases are cut from Conventional Commits instead of hand-pushed tags.

How it works after merge

  1. Conventional-Commit commits land on main (feat: → minor, fix: → patch, feat!: / BREAKING CHANGE: → major).
  2. release-please keeps a "chore: release X.Y.Z" PR up to date (bumps version.txt, regenerates CHANGELOG.md).
  3. Merging that PR → release-please creates the vX.Y.Z tag + a GitHub Release (changelog as the body).
  4. The tag triggers the existing build-and-release.yml, which attaches the signed DLL/installer to that Release — it no longer creates/overwrites the release (append_body: true, dropped generate_release_notes/name).

The first release PR will propose 1.1.0 (two feat: commits since v1.0.0; the xrprof: commit isn't a recognised type, so it's ignored).

build-and-release.yml still builds Release/Debug on every push to main and every PR as a verification gate (unsigned, no Release) — unchanged.

⚠️ Required before merging: RELEASE_PLEASE_TOKEN secret

A tag created with the default GITHUB_TOKEN does not trigger other workflows (GitHub anti-recursion), so build-and-release.yml would never run and the Release would have no assets. Add a RELEASE_PLEASE_TOKEN repo secret (Settings → Secrets and variables → Actions → New repository secret):

Option Grant
Fine-grained PAT (recommended) this repo only — Contents: R/W + Pull requests: R/W
Classic PAT repo scope
GitHub App token contents: write + pull_requests: write (no expiry)

Because we use a PAT, the "Allow GitHub Actions to create and approve pull requests" toggle is not needed. If the secret is missing/under-scoped the release-please job fails fast with a 403 — never a silent asset-less release.

Files

  • new .github/workflows/release-please.yml, release-please-config.json (release-type: simple, vX.Y.Z tags), .release-please-manifest.json (seeded 1.0.0), version.txt
  • changed .github/workflows/build-and-release.yml — release job appends assets, no longer clobbers the changelog
  • changed docs/DEVELOPMENT.mdReleases section rewritten, RELEASE_PLEASE_TOKEN documented

🤖 Generated with Claude Code

mledour and others added 2 commits June 22, 2026 04:03
Wire googleapis/release-please into the repo. On push to main it
maintains a "chore: release X.Y.Z" PR (version bump in version.txt +
CHANGELOG.md regenerated from Conventional Commits); merging that PR
creates the vX.Y.Z tag and a GitHub Release whose body is the changelog.

That tag triggers the existing build-and-release.yml, which now ATTACHES
its signed assets to that Release (append_body: true) instead of creating
a release and overwriting the changelog.

release-please tags via secrets.RELEASE_PLEASE_TOKEN (a PAT / GitHub App
token): a tag pushed with the default GITHUB_TOKEN does not trigger other
workflows, so build-and-release.yml would never fire and the Release would
ship with no assets.

- add release-please.yml, release-please-config.json (release-type: simple,
  vX.Y.Z tags), .release-please-manifest.json seeded at 1.0.0, version.txt
- build-and-release.yml: release job appends assets, no longer clobbers the
  release-please changelog (drop generate_release_notes / name)
- docs/DEVELOPMENT.md: rewrite Releases section, document RELEASE_PLEASE_TOKEN

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Address review of #71:

- release-please.yml: the RELEASE_PLEASE_TOKEN setup comment pointed at a
  nonexistent README "Releases" section; point it at the real docs in
  docs/DEVELOPMENT.md ("Releases" / "Required secret: RELEASE_PLEASE_TOKEN").
- docs/DEVELOPMENT.md: CHANGELOG.md does not exist until the first release
  PR merges, so drop the dead ../CHANGELOG.md relative link (keep a plain
  code span, note it's created by the first release PR).
- build-and-release.yml: clarify the append_body non-idempotency caveat —
  it re-appends on the Actions "Re-run jobs" path, and a failed
  signing/build re-run never reaches the attach step. No behaviour change.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@mledour mledour merged commit 8c167bf into main Jun 22, 2026
@mledour mledour deleted the ci/release-please branch June 22, 2026 08:34
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.

1 participant