Skip to content

fix(ci): prevent transitive skip propagation in release pipeline#266

Merged
polaz merged 6 commits intomainfrom
fix/#265-transitive-skip-propagation
Feb 2, 2026
Merged

fix(ci): prevent transitive skip propagation in release pipeline#266
polaz merged 6 commits intomainfrom
fix/#265-transitive-skip-propagation

Conversation

@polaz
Copy link
Copy Markdown
Member

@polaz polaz commented Feb 2, 2026

Summary

Follow-up to #264. The !cancelled() approach was insufficient — GitHub Actions propagates skipped status transitively through the entire needs chain, blocking semantic-release even when docker-build succeeded.

Root cause: review-thread-gate was a separate job with if: github.event_name == 'pull_request'. On push to main it was skipped, causing ALL downstream jobs in the needs chain to be skipped too (docker-build -> semantic-release -> publish jobs).

Solution: Delete the standalone gate job entirely. Move the gate check into docker-build as its first step with if: github.event_name == 'pull_request'. On push to main, the step is simply skipped — no separate job, no needs chain issues, no wasted runner.

Changes:

  • Remove review-thread-gate job (was ~110 lines + separate runner)
  • Add gate check as first step of docker-build (PR-only via step-level if)
  • docker-build now depends only on quality-checks
  • Simplify summary job — remove gate-specific status branches

Test plan

  • CI passes on this PR (docker-build runs after quality-checks, no skip)
  • After merge to main, verify full pipeline: docker-build, semantic-release, docker-publish all run
  • Verify pending releases since v6.50.0 are published

Fixes #265

- Make gate job always run instead of skipping on non-PR events
- Add early exit for non-PR events with allow_heavy=true output
- Simplify docker-build condition to check gate output only
- Revert !cancelled() approach from #264 (insufficient fix)

Fixes #265
Copilot AI review requested due to automatic review settings February 2, 2026 04:36
@codecov
Copy link
Copy Markdown

codecov bot commented Feb 2, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Updates the GitHub Actions CI/CD workflow to prevent “skipped” status from propagating transitively through the needs chain and blocking the release pipeline on push events.

Changes:

  • Make review-thread-gate always run, with an early exit that sets allow_heavy=true for non-PR events.
  • Simplify docker-build gating logic to rely only on the allow_heavy output.
  • Remove the prior !cancelled()-based workaround introduced in the earlier follow-up.

- Delete separate gate job that broke needs chain on push to main
- Add gate step as first step of docker-build (runs on pull requests only)
- docker-build now depends only on quality-checks
- Simplify summary job status reporting

Fixes #265
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 2 comments.

- Fail with exit 1 on inconsistent pagination (empty page or missing
  cursor with hasNextPage=true) instead of silently breaking the loop
- Rename quality-checks display name to "Quality Checks" to avoid
  collision with legacy "Lint, Test & Build" expected-status job
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 3 comments.

- Only fail on MAX_PAGES when hasNextPage is still true (avoids
  false positive when scan completes exactly on the last page)
- Remove unused image-built output from docker-build job
- Add comment explaining intentional fail-on-unresolved design
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 1 comment.

- Set 30-minute timeout for docker-build (multi-arch build ~8min +
  margin for cache misses and gate check)
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 1 comment.

- Add comment explaining why needs lists all jobs (output access)
  and why always() guarantees execution despite skipped dependencies
@polaz polaz self-assigned this Feb 2, 2026
@polaz polaz requested a review from Copilot February 2, 2026 11:08
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated no new comments.

@polaz polaz merged commit f809a7a into main Feb 2, 2026
27 checks passed
@polaz polaz deleted the fix/#265-transitive-skip-propagation branch February 2, 2026 11:17
sw-release-bot bot pushed a commit that referenced this pull request Feb 2, 2026
## [6.51.0](v6.50.0...v6.51.0) (2026-02-02)

### Features

* **docs:** consent banner + vue-privacy 1.2.2 with gtag fix ([#255](#255)) ([75eb54b](75eb54b))

### Bug Fixes

* **ci:** prevent transitive skip propagation in release pipeline ([#266](#266)) ([f809a7a](f809a7a)), closes [#264](#264) [#265](#265) [#265](#265)
* **ci:** replace heredoc with quoted strings in thread-gate job ([#246](#246)) ([9470b50](9470b50)), closes [#243](#243) [#245](#245)
* **ci:** unblock release pipeline on push to main ([#264](#264)) ([59b8cbe](59b8cbe)), closes [#263](#263)
* **deps:** update hono from 4.11.5 to 4.11.7 ([#248](#248)) ([71cc831](71cc831)), closes [#247](#247)
* **docs:** resolve SEO issues in VitePress documentation ([#249](#249)) ([#250](#250)) ([3e05717](3e05717))
* **docs:** use canonical URL for TOOLS reference in README ([#252](#252)) ([5ac56cc](5ac56cc)), closes [#251](#251)
* **pipelines:** serialize array query params as key[] for GitLab Rails API ([#262](#262)) ([955a3c1](955a3c1)), closes [#261](#261)
@sw-release-bot
Copy link
Copy Markdown

sw-release-bot bot commented Feb 2, 2026

🎉 This PR is included in version 6.51.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Semantic-release still skipped: transitive skip propagation from gate job

2 participants