Skip to content

ci(release-plz): allow manual workflow_dispatch - #479

Merged
Destynova2 merged 1 commit into
mainfrom
ci/release-plz-manual-dispatch
Jul 26, 2026
Merged

ci(release-plz): allow manual workflow_dispatch#479
Destynova2 merged 1 commit into
mainfrom
ci/release-plz-manual-dispatch

Conversation

@Destynova2

Copy link
Copy Markdown
Contributor

Why

release-plz only triggered on push to main touching src/** / Cargo.*, with
no manual trigger. When a release PR merges while the previous release is still
cutting its tag, the new release-pr run races the tag creation and concludes
grob: already up to date — stranding a releasable commit with no way to
re-run
.

That just happened: #478's feat(routing) merged, its release-plz run raced the
v0.36.83 tag, and there is now a merged feat commit on main with no release
PR and no way to trigger a fresh evaluation short of pushing to main (which the
branch protection forbids).

Fix

Add workflow_dispatch to on: and let the release-pr job run under it. An
operator (or gh workflow run release-plz.yml) can now open the release PR on
demand, without pushing to main.

This change touches only .github/, so it does not itself trigger the push
filter — the operator dispatches it after merge.

Verified: actionlint .github/workflows/release-plz.yml clean.

🤖 Generated with Claude Code

release-plz only ran on push to `main` touching `src/**`/`Cargo.*`. When a
release PR merges while the previous release is still cutting its tag, the new
release PR run can race the tag creation and conclude "already up to date",
stranding a releasable commit with no way to re-run — exactly what left a merged
`feat` commit unreleased with no path to trigger a fresh evaluation.

Adds `workflow_dispatch` and allows the `release-pr` job to run under it, so an
operator can open the release PR on demand without pushing to `main`.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@Destynova2
Destynova2 enabled auto-merge July 26, 2026 08:14
@Destynova2
Destynova2 merged commit c378ad9 into main Jul 26, 2026
36 checks passed
@Destynova2
Destynova2 deleted the ci/release-plz-manual-dispatch branch July 26, 2026 08:21
Destynova2 added a commit that referenced this pull request Jul 26, 2026
## The CI/CD bug this fixes

`feat(routing)` (#478) merged cleanly but **never produced a release**.
release-plz
kept reporting `grob: no commit matches the release_commits regex` and
there was
no way to cut v0.36.84.

### Root cause

Every PR was merged with a **merge commit** (`gh pr merge --merge`), so
the
feature commit sits on the merge's **second parent**:

```
572f539 Merge #478      parents: 95db3f6 (release v0.36.83)  de4b690 (feat routing)
```

When release-plz cut v0.36.83 **between** the routing branch's creation
and its
merge, `de4b690` ended up *beside* the release commit rather than after
it. Its
version walk over `v0.36.83..HEAD` doesn't traverse into that second
parent —
`git log --first-parent v0.36.83..main` is **empty** — so the `feat`
commit is
invisible to the bump calc. It works for most PRs only because they're
released
immediately after merging, before the next merge buries them.

## Fix

**Squash-merge only.** Repo settings now:
- `allow_merge_commit = false`
- `squash_merge_commit_title = PR_TITLE`

Every PR becomes one conventional commit on a **linear** `main`, which
release-plz
reads reliably — the second-parent hiding place no longer exists.
Applied to the
repo already; this PR aligns CLAUDE.md (`--auto --merge` → `--auto
--squash`,
plus a note on why the PR title must be a conventional commit) and
documents the
manual `gh workflow run release-plz.yml` trigger added in #479.

## For the currently-stranded routing fix

It's on `main` and ships with the next release cut for any releasable
commit
(now reliably, thanks to squash). Meanwhile it has a trivial workaround
— name
the config entry `gpt-5-5` instead of `gpt-5.5`.

## Note

This PR is the first squash-only merge — its single commit validates the
new
policy end to end.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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