Skip to content

ci: stop running the unit lane before tagging - #170

Open
mogita wants to merge 4 commits into
mainfrom
fix/cha-5511-drop-pretag-tests
Open

mogita wants to merge 4 commits into
mainfrom
fix/cha-5511-drop-pretag-tests

Conversation

@mogita

@mogita mogita commented Sep 23, 2026

Copy link
Copy Markdown
Contributor

Ticket

CHA-5511

Problem

The Release PR skips the unit lane, but merging it ran the same lane on the merge commit before tagging. That commit has the Release PR's tree, so the run re-tested already-tested code at the one point where a failure leaves the release stuck on autorelease: pending.

Solution

Remove the pre-tag unit run. release now needs only detect, so merging a Release PR tags and publishes directly, the same way chat releases. The docs and workflow comments that described the pre-tag gate are updated.

How to verify

actionlint .github/workflows/release.yml .github/workflows/ci.yml

The tagged commit is the Release PR's merge commit. Merges are squashed onto an
up-to-date branch and release-please refreshes its PR on every push, so that commit's
tree is the Release PR's tree: the version bump and changelog on top of an
already-tested default branch. The Release PR already skips the lane, so running it
after merge re-tested the same tree at the one point where a failure could no longer
be fixed on the PR and instead left the release stuck on autorelease: pending.

Release now matches chat's: merge, tag, publish.
@mogita
mogita requested a review from tbarbugli as a code owner September 23, 2026 14:55
Comment thread .github/workflows/release.yml
Comment thread CONTRIBUTING.md Outdated
Comment thread CONTRIBUTING.md Outdated
Comment thread .github/workflows/release.yml Outdated
…tfixes

- The Release PR skip now also requires every changed file to be one release-please
  writes. A release-only job lists the PR's files; a code change pushed onto a Release
  PR by hand, an unexpected file or a failed lookup runs the unit lane instead. Checked
  against the open Release PRs, which all still skip.
- Releases from an N.x branch run the unit lane before tagging again. Hotfix commits
  are pushed there without a PR, so nothing else tested them. Releases from the default
  branch still tag directly.
- The detect stand-down comment no longer refers to a test run, and the java and net
  docs no longer say publish_tag can fix a build that does not compile.
release accepted a skipped tests job under !cancelled(), so a detect job that wrote
ready=true and then failed a later step still reached the tag. In getstream-go that
later step is the go.mod major check, so an uninstallable major would have been tagged
permanently. release now also requires needs.detect.result == 'success'.
… its version

The allowlist let a whole file through, and pyproject.toml, uv.lock, composer.json, the
csproj and Client.cs also hold dependencies or client code, so a hand-pushed dependency
bump still skipped the lane. Now every added line in a version file must carry the new
version from the manifest, and with versions masked the removed lines must match the
added ones one for one. The file list reaches the inline script through a temp file,
since a heredoc on python3 takes over its stdin.

Checked end to end with the step as written: the open Release PRs in stream-py,
getstream-php, getstream-net and getstream-go skip; ordinary PRs, an added dependency
line, a dropped dependency line, an injected line and an extra file all run the lane.

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.

1 participant