Skip to content

ci: keep a release-plz release PR open on main - #505

Open
tobyhede wants to merge 2 commits into
claude/project-thread-khlvuqfrom
claude/release-plz-release-pr
Open

tobyhede wants to merge 2 commits into
claude/project-thread-khlvuqfrom
claude/release-plz-release-pr

Conversation

@tobyhede

@tobyhede tobyhede commented Nov 9, 2026 •

Copy link
Copy Markdown
Contributor

Stacked on #503 (the Release metadata check). Merge that first; GitHub will then retarget this PR to main.

Summary

Releasing from main took a hand-made prepare-release PR and a manual tag, and each step was a chance to slip.
release-plz now opens and maintains that PR after every push to main, bumping the workspace version from the conventional commits since the last v* tag.
Merging the release PR is the human gate before production.

Changes

  • release-plz.toml: versions come from v* git tags (git_only on cipherstash-proxy only), nothing is published, only cipherstash-proxy is released, the changelog stays hand-written, semver checks are off, tags are vX.Y.Z.
  • .github/workflows/release-plz.yml: runs release-plz release-pr on push to main with a GitHub App token from the main-only release environment, so the release PR runs test.yml and the required Build (Rust MSRV) check. Actions are pinned to SHAs, default permissions are contents: read, and runs are never cancelled mid-way.
  • docs/adr/0001-release-plz-release-pr.md: why the setup looks like this and how it differs from cipherstash/stack.
  • DEVELOPMENT.md: the prepare-release step now describes the release PR. release/2.2 keeps the manual steps.

Tagging and the GitHub release stay manual (mise run release) until a follow-up adds the release step with signed tags.

Verification

  • A local dry run of release-plz 0.3.174 with this config proposes 3.0.1 -> 3.1.0 and changes only Cargo.toml and Cargo.lock. The 2.2.x tags don't interfere, because release-plz takes the highest matching semver tag.
  • The dry run caught two config problems, both fixed: workspace-wide git_only failed on cipherstash-proxy-burn-in (added after v3.0.1), and semver checks on the internal library would have forced major bumps.
  • Not yet verifiable before merge: the first run on main must show the App token works, the release PR's commit is Verified, test.yml runs on it, and a second push to main updates the same PR.

Review notes

  • The workflow reads RELEASE_PLZ_APP_CLIENT_ID and RELEASE_PLZ_APP_PRIVATE_KEY as secrets from the release environment.

Acknowledgment

By submitting this pull request, I confirm that CipherStash can use, modify, copy, and redistribute this contribution, under the terms of CipherStash's choice.


Generated by Claude Code

Releasing from main took a hand-made prepare-release PR and a manual
tag, and each step was a chance to slip. release-plz now opens and
maintains that PR after every push to main, bumping the workspace
version from conventional commits since the last v* tag.

The configuration differs from other CipherStash repos on purpose,
recorded in docs/adr/0001: versions come from git tags (nothing goes to
crates.io), the changelog stays hand-written, semver checks are off
because the library target is internal, and the job uses a GitHub App
token from the main-only `release` environment so the release PR runs
the required CI. git_only is set on cipherstash-proxy rather than the
workspace: workspace-wide, release-plz looks up every member at the
last tag and fails on members added since then.

A local dry run of release-plz 0.3.174 with this config proposes
3.0.1 -> 3.1.0 and changes only Cargo.toml and Cargo.lock. The 2.2.x
tags don't interfere, because release-plz takes the highest matching
semver tag.

Tagging and the GitHub release stay manual (`mise run release`) until
the release step is added.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@tobyhede
tobyhede marked this pull request as ready for review November 9, 2026 01:31

@cipherstash-agent cipherstash-agent left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review attestation

Reviewed b2d6059 · posted from Claude Code · claude-sonnet-5-5 · effort medium
Sources: code-review · unknown model (forked skill run); review-cross-check · claude-sonnet-5-5
Skills: code-review, review-cross-check, review-post

No findings.


Generated by Claude Code

The client ID is stored as a secret in the release environment, not a
variable, so vars.RELEASE_PLZ_APP_CLIENT_ID would be empty and the
token step would fail.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@tobyhede
tobyhede added this pull request to stack #506 November 9, 2026 02:26

This branch has not been deployed

No deployments
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.

3 participants