Skip to content

ci: add release concurrency guards + document release gotchas - #47

Merged
elkaix merged 1 commit into
mainfrom
ci/release-concurrency-and-gotcha-docs
Jun 1, 2026
Merged

ci: add release concurrency guards + document release gotchas#47
elkaix merged 1 commit into
mainfrom
ci/release-concurrency-and-gotcha-docs

Conversation

@elkaix

@elkaix elkaix commented Jun 1, 2026

Copy link
Copy Markdown
Member

Follow-up to #46 — hardens the release pipeline and records the traps hit while shipping 0.28.0.

Concurrency guards

Adds a per-ref concurrency group 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 protected against overlapping same-tag runs (a double tag push or a re-run). scoop-bucket, docker, and promote-release already had it.

cancel-in-progress: false is 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:

  1. Tag triggers are GitHub glob, not regex/extglob( ) are literal, so "v+([0-9]).+([0-9]).+([0-9])" (introduced in fb7fdbf) matched no tag and silently fired nothing. Must be "v[0-9]+.[0-9]+.[0-9]+".
  2. A pushed tag runs the workflow at the tagged commit — fix a release workflow, then re-tag onto the post-fix commit (annotated; pre-flight that nothing shipped before deleting/re-pushing).
  3. main requires conversation resolutionmergeStateStatus: BLOCKED with all checks green = an unresolved review thread (CodeRabbit opens them even when its status says "Review skipped"); resolve to unblock. main is squash-only.

Validation

  • All 7 v*-path workflows parse as valid YAML and now carry a concurrency block.
  • 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

    • Configured concurrency controls across CI/CD workflows (Homebrew, Linux, Windows, and release pipelines) to serialize builds and prevent duplicate executions.
  • Documentation

    • Added release pipeline operational guidelines covering trigger patterns, workflow configuration alignment, and branch merge procedures.

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.
@coderabbitai

coderabbitai Bot commented Jun 1, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 8852f5b9-4e9c-46f3-828d-5ceb5bef46bf

📥 Commits

Reviewing files that changed from the base of the PR and between 1bea2d1 and b013655.

📒 Files selected for processing (5)
  • .github/workflows/homebrew-tap.yml
  • .github/workflows/linux-installer.yml
  • .github/workflows/release-pythinker-cli.yml
  • .github/workflows/windows-installer.yml
  • AGENTS.md

📝 Walkthrough

Walkthrough

This 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.

Changes

Release pipeline reliability improvements

Layer / File(s) Summary
Workflow concurrency configuration
.github/workflows/homebrew-tap.yml, .github/workflows/linux-installer.yml, .github/workflows/release-pythinker-cli.yml, .github/workflows/windows-installer.yml
Four workflows now define ref-scoped concurrency groups with cancel-in-progress: false, ensuring multiple runs targeting the same branch or tag are serialized without canceling in-flight executions.
Release pipeline documentation
AGENTS.md
New "Release pipeline gotchas" section documents release-time failure modes: GitHub tag glob pattern caveats, workflow definition mismatch after re-tagging, and merge blocking from unresolved review conversations.

🎯 1 (Trivial) | ⏱️ ~3 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed Title follows conventional commits format (type: ci, scope: optional, description clear) and accurately summarizes the dual nature of changes (concurrency guards + documentation).
Description check ✅ Passed Description is comprehensive and covers objectives, rationale, and validation. However, it deviates from template structure (missing sections like Related Issue, Checklist, and explicit link format).
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ci/release-concurrency-and-gotcha-docs

Comment @coderabbitai help to get the list of available commands and usage tips.

@elkaix
elkaix merged commit df7698f into main Jun 1, 2026
23 checks passed
@elkaix
elkaix deleted the ci/release-concurrency-and-gotcha-docs branch June 1, 2026 14:14
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