ci: add release concurrency guards + document release gotchas - #47
Merged
Conversation
Concurrency: add a per-ref concurrency group (cancel-in-progress: false — a publish must never be cancelled mid-flight) to the four v*-tag publishers that lacked one (release-pythinker-cli, linux-installer, windows-installer, homebrew-tap), so the whole v* pipeline is consistently guarded against overlapping same-tag runs. scoop-bucket, docker, and promote-release already had it. Resolves the concurrency nit deferred from #46. Docs: add a 'Release pipeline gotchas' section to AGENTS.md capturing the traps hit while shipping 0.28.0 — GitHub tag filters are glob (not regex/extglob, so ( ) are literal and v+([0-9])... matches nothing), a pushed tag runs the workflow at the tagged commit (re-tag onto the fixed commit), and main's required_conversation_resolution makes all-green checks insufficient to merge when a review thread is unresolved. [skip changelog] — CI/docs hardening, no user-facing product change.
Contributor
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (5)
📝 WalkthroughWalkthroughThis PR adds concurrency controls to four GitHub Actions workflows to prevent competing runs on the same git ref from canceling earlier executions, and documents common release pipeline gotchas in operational guidance. ChangesRelease pipeline reliability improvements
🎯 1 (Trivial) | ⏱️ ~3 minutes 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Follow-up to #46 — hardens the release pipeline and records the traps hit while shipping 0.28.0.
Concurrency guards
Adds a per-ref
concurrencygroup to the fourv*-tag publishers that lacked one —release-pythinker-cli,linux-installer,windows-installer,homebrew-tap— so the wholev*pipeline is consistently protected against overlapping same-tag runs (a double tag push or a re-run).scoop-bucket,docker, andpromote-releasealready had it.cancel-in-progress: falseis deliberate: a publish/upload must never be cancelled mid-flight. Per-ref groups (group: <workflow>-${{ github.ref }}) mean different workflows still run concurrently as the prerelease→promote coordination expects — only the same workflow for the same tag serializes. Resolves the concurrency nit deferred from #46.Release pipeline gotchas (AGENTS.md)
New "Release pipeline gotchas" section documenting what cost us a few cycles on 0.28.0:
()are literal, so"v+([0-9]).+([0-9]).+([0-9])"(introduced infb7fdbf) matched no tag and silently fired nothing. Must be"v[0-9]+.[0-9]+.[0-9]+".mainrequires conversation resolution —mergeStateStatus: BLOCKEDwith all checks green = an unresolved review thread (CodeRabbit opens them even when its status says "Review skipped"); resolve to unblock.mainis squash-only.Validation
v*-path workflows parse as valid YAML and now carry aconcurrencyblock.pytest tests/core/test_load_agents_md.py tests/core/test_default_agent.py→ 17 passed (AGENTS.md edit doesn't affect prompt loading).[skip changelog] — CI/docs hardening, no user-facing product change.
Summary by CodeRabbit
Chores
Documentation