Skip to content

fix(ci): gate the GitHub Pages deploy on every check in test-build-release - #164

Merged
danielvm-git merged 1 commit into
mainfrom
fix/ci-pages-gated
Oct 25, 2026
Merged

danielvm-git merged 1 commit into
mainfrom
fix/ci-pages-gated

Conversation

@danielvm-git

Copy link
Copy Markdown
Owner

Problem

docs-site.yml ran as its own workflow on docs pushes, in parallel with Test Build Release. With no needs: edge, Pages could publish while sync, verification-gates, skill-verify or story-verify was red or still running. Last gap from the portfolio template (danielvm-git/.github, docs/concept/github-actions-best-practices.md). Bug: specs/bugs/BUG-2026-10-25-pages-not-gated.md.

Fix

  • test-build-release.yml gets two new jobs:
    • pages-build: needs all four gate jobs; runs only on push or dispatch on main. dorny/paths-filter (SHA-pinned, v4.0.3) keeps the old docs paths, so a push that touches no docs input skips the build. A manual dispatch always redeploys.
    • pages-deploy: needs pages-build; concurrency: pages, cancel-in-progress: false; the same 3-attempt deploy retry.
    • Both use ubuntu-22.04, SHA-pinned actions and timeouts. Only pages-deploy gets pages: write / id-token: write.
  • docs-site.yml is removed.
  • scripts/test-ci-pipeline-contract.sh: every actions/deploy-pages job must live in the pipeline, need every gate job (directly or through another job), be limited to main, not use always()/cancelled(), and never cancel in progress. New --self-test fixtures cover each of these breaches.

Evidence

  • Contract before the fix: FAIL: pipeline has no Pages deploy job and FAIL: docs-site.yml:deploy: Pages deploy outside the pipeline. After: OK. Self-test passes 11/11 on bash 5 and on macOS /bin/bash 3.2, and I checked that each fixture fails for its own reason.
  • actionlint reports no problems.
  • Local Preflight is green: compliance 97% (PASS), doctrine, skill links, golden 46/46, sync-skills, trace-stories --strict.

After merge

A docs change on main should start pages-build only after all four gate jobs finish. That run gets recorded in the bug file.

…lease

docs-site.yml ran as its own workflow on docs pushes, in parallel with the
pipeline, so Pages could publish while a gate job was red. Move the build
and deploy into test-build-release.yml as pages-build (needs all four gate
jobs, push/dispatch on main, dorny/paths-filter keeps the old docs paths)
and pages-deploy (concurrency pages, no cancel, 3-attempt retry).

The pipeline contract now requires every actions/deploy-pages job to live
in the pipeline, need every gate transitively, be limited to main, avoid
always()/cancelled() and never cancel in progress; self-test fixtures
cover each breach.

Refs: BUG-2026-10-25-pages-not-gated
@danielvm-git
danielvm-git merged commit 5f3e4de into main Oct 25, 2026
7 checks passed
github-actions Bot pushed a commit that referenced this pull request Oct 25, 2026
## [2.88.15](v2.88.14...v2.88.15) (2026-10-25)

### Bug Fixes

* **ci:** gate the GitHub Pages deploy on every check in test-build-release ([#164](#164)) ([5f3e4de](5f3e4de))
@github-actions

Copy link
Copy Markdown

🎉 This PR is included in version 2.88.15 🎉

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.

1 participant