Skip to content

feat: automate releases with release-please#6009

Open
kriscoleman wants to merge 2 commits into
mainfrom
feat/release-please
Open

feat: automate releases with release-please#6009
kriscoleman wants to merge 2 commits into
mainfrom
feat/release-please

Conversation

@kriscoleman
Copy link
Copy Markdown
Member

@kriscoleman kriscoleman commented May 11, 2026

feat: automate releases with release-please

Summary

This PR replaces the manual bin/tag-and-release.sh workflow with automated releases powered by release-please. When conventional commits are merged to main, release-please will automatically open a release PR. Merging that PR creates a version tag and GitHub release, which then triggers the existing production deployment pipeline — all within a single workflow run using GITHUB_TOKEN (no PAT required).

Changes

  • Added .github/workflows/release-please.yaml — GitHub Action that runs release-please on every push to main, then conditionally calls the deploy workflow when a release is created
  • Added release-please-config.json — configures the simple release type for the root package
  • Added .release-please-manifest.json — tracks the current released version
  • Added version.txt — version file managed by release-please (required by the simple release type)
  • Updated bin/verify-tag.sh — now accepts both semver tags (from release-please) and legacy calver tags
  • Updated .github/workflows/deploy-prod.yaml — converted to a reusable workflow (workflow_call) so it can be called from release-please; added ref to all checkout steps; replaced GITHUB_REF_NAME usages with a workflow-level VERSION_TAG env var; removed the github-release job (release-please handles changelog and release creation), added upload-sbom job to attach SBOMs to release-please-generated releases
  • Updated MakefileVERSION_TAG now reads from version.txt so local builds stay in sync
  • Updated bin/tag-and-release.sh — added deprecation notice directing users to the new automated workflow

How it works

  1. A conventional commit (feat:, fix:, chore:, etc.) is merged to main
  2. release-please.yaml runs and opens a release PR with an updated changelog and version bump
  3. When the release PR is merged, release-please creates a Git tag and GitHub release
  4. The same workflow then calls deploy-prod.yaml with the new tag, triggering the full production deployment

UAT

  1. Merge this PR
  2. Make a conventional commit to main (e.g., feat: ... or fix: ...)
  3. Verify that release-please opens a release PR
  4. Merge the release PR and verify that the full production deployment runs via the chained workflow

Replace the manual tag-and-release.sh workflow with release-please:
- Add release-please GitHub Action workflow
- Add release-please manifest and config files
- Add version.txt for simple release type
- Update verify-tag.sh to accept semver tags from release-please
- Remove github-release job from deploy-prod.yaml (release-please handles this)
- Add upload-sbom job to attach SBOMs to release-please releases
- Update Makefile to read VERSION_TAG from version.txt
- Deprecate bin/tag-and-release.sh in favor of automated releases
@kriscoleman kriscoleman requested a review from a team as a code owner May 11, 2026 19:37
…OKEN

Follow the ekco pattern by making deploy-prod.yaml a reusable workflow
that release-please.yaml calls conditionally when a release is created.
This eliminates the need for a Personal Access Token since everything
stays within a single workflow run using GITHUB_TOKEN.

Changes:
- release-please.yaml now outputs release_created and tag_name
- Added deploy job that calls deploy-prod.yaml via workflow_call
- deploy-prod.yaml now supports workflow_call with a 'tag' input
- All checkout steps in deploy-prod.yaml now checkout the correct ref
- Replaced all GITHUB_REF_NAME references with workflow-level VERSION_TAG env
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