Skip to content

fix(ci): install actionlint in the Release Test job so the emitted-workflow guard runs - #636

Merged
joshua-temple merged 1 commit into
mainfrom
fix/actionlint-install-all-go-test-lanes
Jul 18, 2026
Merged

fix(ci): install actionlint in the Release Test job so the emitted-workflow guard runs#636
joshua-temple merged 1 commit into
mainfrom
fix/actionlint-install-all-go-test-lanes

Conversation

@joshua-temple

Copy link
Copy Markdown
Collaborator

Problem

The Release workflow's Test job (release.yaml) runs go test -v ./... over the root module, which includes internal/generate. That package's emitted-workflow enforcement guard (TestActionlint_FeatureMatrix plus the census-driven sweeps) hard-fails under CI (os.Getenv("CI") != "") when the actionlint binary is not on PATH, by design so it can never silently skip.

The guard's SHA-pinned actionlint install was added to validate.yaml and pr.yaml but not to release.yaml. At release time that Test job therefore hard-fails on the guard tests, so a real Release would fail its Test job and publish nothing. A dry-run Release surfaced this.

This is release-path-critical: it gates whether a release publishes. It is not generated output, so it is not fleet-relevant in the generator sense.

Fix

Add the identical SHA-pinned actionlint install (go install github.com/rhysd/actionlint/cmd/actionlint@914e7df... # v1.7.12, same SHA as workflow-lint, so no version drift) to release.yaml's Test job, ordered after setup-go and before the test step.

Lane audit (every CI job running go test over internal/generate)

Lane Runs root go test actionlint before fix
validate.yaml Test (go test ... ./...) yes present
pr.yaml unit tests (go list ./... | grep -v /e2e | xargs go test) yes present
release.yaml Test (go test -v ./...) yes absent -> fixed here
validate.yaml ./harness/... no (harness only) n/a, left
e2e.yaml no (separate e2e/go.mod) n/a, left
nightly-release / auto-promote / orchestrate / hotfix / promote / build-cli no go test n/a, left

The fix keeps the guard's deliberate hard-fail-under-CI behavior (anti-silent-skip from #631); it corrects the CI wiring so actionlint is present rather than weakening the guard.

Verification

  • go build ./..., go test ./... (actionlint on PATH), golangci-lint run ./... all green
  • actionlint clean on the edited workflows (workflow-lint stays green)
  • cascade verify --own-repo: 3 files, no drift (these workflows are hand-authored)
  • CHANGELOG [Unreleased] entry added; changelog guard passes post-commit

…rkflow guard runs

The Release workflow's Test job runs go test ./... over internal/generate, whose emitted-workflow enforcement guard hard-fails under CI when the actionlint binary is absent. That job did not install actionlint, so a real release would fail its Test job and publish nothing. Add the same SHA-pinned actionlint install used by validate.yaml and pr.yaml, ordered after setup-go and before the test step.

Signed-off-by: Joshua Temple <joshua.temple@stablekernel.com>
@joshua-temple
joshua-temple merged commit 77bd444 into main Jul 18, 2026
17 checks passed
@joshua-temple
joshua-temple deleted the fix/actionlint-install-all-go-test-lanes branch July 18, 2026 13: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