Skip to content

ci: adopt Release Please for versioning, tags, and releases#415

Merged
Omicron7 merged 1 commit into
mainfrom
feat/release-please
Jun 30, 2026
Merged

ci: adopt Release Please for versioning, tags, and releases#415
Omicron7 merged 1 commit into
mainfrom
feat/release-please

Conversation

@Omicron7

Copy link
Copy Markdown
Contributor

Why

The release mechanism here was fragile and silently broken:

  • Versions were bumped by hand in package.json.
  • build-dist.yml moved the rolling v1 tag via sersoft-gmbh/running-release-tags-action from a shallow checkout, which failed every release. As a result the only tags in the repo were v1.0.0 and v1, and v1 had drifted 9 commits stale@v1 consumers (bills' deploy, etc.) were running an old action bundle.

What

Switch to Release Please, the same flow the bills app uses.

release-please.yml (new)

  • release-please reads Conventional Commits on main and maintains a release PR (version bump in package.json + CHANGELOG.md). Merging it tags vX.Y.Z and cuts a GitHub release.
  • A roll-tags job then points v{major} (v1) and v{major}.{minor} (v1.7) at the released commit via the refs API — no checkout, so none of the shallow-clone tag-push pitfalls that broke the old step.
  • Uses CRU_DEVOPS_GITHUB_TOKEN so the release PR triggers the required Lint, Build & Test check (a default-GITHUB_TOKEN PR wouldn't) and tag pushes are allowed.

build-dist.yml (trimmed)

  • Now does only what its name says: rebuild + commit dist/ on every push to main. Since dist/ is always current on main, the commit release-please tags already carries built output — the tags never point at an unbuilt commit. Versioning/tags moved to release-please.yml.

Notes

  • The workflow_call check-pr-release-label / get-pr-release-label workflows are left untouched — they're consumed by other apps' deployments, not this repo's release path.
  • Bootstrap is clean: package.json is 1.7.1 and a v1.7.1 tag now exists, so release-please starts from v1.7.1; the next feat:/fix: opens the first release PR. No giant historical CHANGELOG.
  • release-type: node.

Follow-up (optional)

dist/ is kept current via the per-push rebuild (simplest, keeps @main runnable). If you'd rather cut the per-merge "build: rebuild dist/" churn, we can instead rebuild dist/ only on the release PR — more moving parts, happy to do it if you prefer.

🤖 Generated with Claude Code

Replace the manual package.json bump + sersoft-gmbh/running-release-tags-action
flow (which silently failed to move tags from a shallow checkout) with
release-please:

- release-please.yml: release-please maintains a release PR (version bump +
  CHANGELOG from Conventional Commits); merging it tags vX.Y.Z + cuts a GitHub
  release. A roll-tags job then moves the major (v1) and minor (v1.7) tags onto
  the released commit via the refs API, so @v1 / @v1.7 consumers track it (no
  checkout, so no shallow-clone tag-push pitfalls).
- build-dist.yml: trimmed to just rebuilding + committing dist/ on every push
  to main, so the released commit always carries built output. Versioning and
  tags now belong to release-please.

Uses CRU_DEVOPS_GITHUB_TOKEN so the release PR triggers the required
"Lint, Build & Test" check (a default-GITHUB_TOKEN PR would not) and tag pushes
are allowed. The workflow_call check/get-pr-release-label workflows are left
as-is (consumed by other apps).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@Omicron7 Omicron7 merged commit e16d3f5 into main Jun 30, 2026
2 checks passed
@Omicron7 Omicron7 deleted the feat/release-please branch June 30, 2026 20:53
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