Skip to content

fix(ci): use always() on release job to break skip propagation#358

Merged
mmogr merged 1 commit intomainfrom
fix/release-skip-propagation
Mar 14, 2026
Merged

fix(ci): use always() on release job to break skip propagation#358
mmogr merged 1 commit intomainfrom
fix/release-skip-propagation

Conversation

@mmogr
Copy link
Owner

@mmogr mmogr commented Mar 14, 2026

Problem

The release job in ci.yml was being silently skipped on every push to main — before its if expression was ever evaluated. This caused v0.5.11 to have no release despite CI passing.

Root cause: skip-taint propagation through the ci-success job.

cli-cross-os (matrix)    → SKIPPED  (only runs on pull_request)
  ↓
ci-success (if: always()) → SUCCESS  (runs itself, but does not clear the taint)
  ↓
release (custom if:)     → SKIPPED  (runner never allocated, runner_id: null)

if: always() on ci-success allows it to run despite the skipped matrix dependency, but does not clear the skip signal for downstream jobs. release has a custom non-always() condition, so GitHub's scheduler skips it without evaluating the expression.

Fix

Add always() to the release job to break the transitive skip propagation, while explicitly guarding with needs.ci-success.result == 'success' to preserve the CI-gate that always() would otherwise bypass.

# Before
if: github.event_name == 'push' && github.ref == 'refs/heads/main'

# After
if: always() && needs.ci-success.result == 'success' && github.event_name == 'push' && github.ref == 'refs/heads/main'

Follow-up

After this merges, trigger workflow_dispatch on release.yml to backfill the missing v0.5.11 release.

…li-cross-os

The cli-cross-os matrix job only runs on pull_request, so it is always
skipped on push to main. GitHub's skip-taint propagation passes through
ci-success (which uses always() for itself) and silently skips the
release job before its if condition is ever evaluated.

Adding always() breaks the transitive skip propagation, while
needs.ci-success.result == 'success' preserves the CI-gate that
always() would otherwise bypass.
@mmogr mmogr merged commit abf4ad7 into main Mar 14, 2026
4 checks passed
@mmogr mmogr deleted the fix/release-skip-propagation branch March 14, 2026 07:17
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