Skip to content

Conversation

@cmgrote
Copy link
Collaborator

@cmgrote cmgrote commented Jan 15, 2026

Summary

  • Adds prepare-release.yml workflow to create release branches and trigger tests
  • Adds finish-release.yml workflow to create GitHub releases and bump snapshot versions
  • Two-workflow design allows recovery from ephemeral test failures

How It Works

Prepare Release

  1. Run workflow with bump type (patch/minor/major)
  2. Creates release-X.Y.Z branch with version updated
  3. Triggers test workflow on the release branch

Finish Release

  1. Wait for tests to pass (rerun manually if ephemeral failures)
  2. Run workflow with the release version
  3. Validates tests passed, creates GitHub Release
  4. Creates auto-merge PR to bump main to next snapshot

Test plan

  • Review workflow YAML syntax
  • Test prepare-release with a patch bump
  • Verify release branch created correctly
  • Verify test workflow triggered
  • Test finish-release after tests pass
  • Verify GitHub Release created
  • Verify snapshot bump PR created with auto-merge

🤖 Generated with Claude Code


Note

Introduces GitHub Actions to automate release preparation and completion.

  • Adds prepare-release.yml to calculate versions from current VERSION_NAME, create release-X.Y.Z branch with updated gradle.properties, and trigger test.yml on that branch
  • Adds finish-release.yml to validate the release branch and confirm tests passed on the exact HEAD, create a GitHub Release (vX.Y.Z), and open an auto-merge PR from snapshot to main to bump VERSION_NAME to the next -SNAPSHOT

Written by Cursor Bugbot for commit a6e72e1. This will update automatically on new commits. Configure here.

cmgrote and others added 2 commits January 15, 2026 17:19
Introduces two workflows to automate the release process:

- prepare-release.yml: Creates release branch, updates version,
  triggers tests. Supports major/minor/patch version bumps.

- finish-release.yml: Validates tests passed, creates GitHub release,
  and bumps main to next snapshot version via auto-merge PR.

The two-workflow design allows recovery from ephemeral test failures
by letting users manually rerun tests before completing the release.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Signed-off-by: Chris (He/Him) <cgrote@gmail.com>
Signed-off-by: Chris (He/Him) <cgrote@gmail.com>
cmgrote and others added 2 commits January 15, 2026 17:49
Signed-off-by: Chris (He/Him) <cgrote@gmail.com>
- Pass inputs via environment variables instead of direct interpolation
  to prevent shell command injection
- Check for empty/null result from gh run list before parsing to provide
  accurate error message when no test runs exist

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Signed-off-by: Chris (He/Him) <cgrote@gmail.com>
Add headSha validation to ensure the passing test run actually tested
the current HEAD of the release branch. This prevents releasing untested
code if the branch was modified after tests passed.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Signed-off-by: Chris (He/Him) <cgrote@gmail.com>
Output the validated commit SHA from the verify_tests step and use it
as the --target for gh release create. This ensures the release is
created at the exact commit that was tested, preventing a race condition
where the branch could move between validation and release creation.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Signed-off-by: Chris (He/Him) <cgrote@gmail.com>
Check if a PR from snapshot to main already exists before attempting
to create one. If it exists, update the existing PR's title and body
instead of failing with "a pull request already exists" error.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Signed-off-by: Chris (He/Him) <cgrote@gmail.com>
@cmgrote cmgrote merged commit 3be7bbb into main Jan 15, 2026
6 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