Skip to content

fix(release): trigger on merge-to-main with should_release gate#107

Open
kayodebristol wants to merge 1 commit into
mainfrom
fix/release-trigger-main-push
Open

fix(release): trigger on merge-to-main with should_release gate#107
kayodebristol wants to merge 1 commit into
mainfrom
fix/release-trigger-main-push

Conversation

@kayodebristol

Copy link
Copy Markdown
Contributor

Problem

Releases stopped org-wide since ~2026-05-11. PR plures/.github#13 fixed version computation (highest-tag reconciliation), but releases still won't fire because every repo's release.yml triggers only on push: tags: ['v*'] + workflow_dispatch.

The release pipeline is what creates and pushes the v* tag. So a tag is an output of a release, never an input on merge-to-main. Result: a circular trigger — nothing pushes a tag on normal merges, so nothing releases. The only start paths are a human clicking Run workflow or hand-pushing a tag = manual dependency (violates automation-first + zero-manual-dependency).

Fix

Add push: branches: [main] (conventional-commit autobump on merge-to-main, the documented model in even-odd-release-versioning.md and the reusable's own USAGE header) plus a concurrency guard. Keep tags: ['v*'] and workflow_dispatch for backward-compat.

No over-release risk: the reusable release-reusable.yml decide step already returns should_release=false for chore/ci/docs-only pushes (git log LAST_TAG..HEAD empty or no feat|fix|perf|refactor), and every downstream job gates on should_release == 'true'. The self-triggered chore(release): bump push re-runs prepare, sees the fresh tag as LAST_TAG, and cleanly no-ops (concurrency guard serializes it).

Validation

  • actionlint passes; 0 literal-\n mangling; 0 secret corruption.
  • Additive diff (4 insertions), thin caller otherwise byte-identical.

Scope

Mechanical, byte-identical fix across ~70 release-bearing plures repos. This is the canary (chronos). Full findings + sweep list: workspace tmp/release-trigger-findings.md. Do not merge until canary behavior is confirmed on one real merge-to-main.

MSC Alignment: Execution Discipline — restores autonomous, deterministic org-wide releases.

Copilot AI review requested due to automatic review settings July 19, 2026 07:00

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR updates Chronos’ release workflow to restore autonomous releases by triggering the reusable release pipeline on merge-to-main (instead of only on v* tag pushes), and adds a concurrency guard intended to prevent overlapping release runs.

Changes:

  • Add push: branches: [main] so merges to main can initiate releases.
  • Add a top-level concurrency group to serialize release workflow runs.

Comment on lines +16 to +18
concurrency:
group: release-${{ github.repository }}-${{ github.ref_name }}
cancel-in-progress: false
type: string
required: false
concurrency:
group: release-${{ github.repository }}-${{ github.ref_name }}
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.

2 participants