Skip to content

[1.5] ci: make all-done and all-done-actionlint fail when a needed job fails - #5615

Merged
kolyshkin merged 3 commits into
opencontainers:release-1.5from
kolyshkin:1.5-5609
Nov 12, 2026
Merged

kolyshkin merged 3 commits into
opencontainers:release-1.5from
kolyshkin:1.5-5609

Conversation

@kolyshkin

Copy link
Copy Markdown
Contributor

Backport of #5609 to release-1.5. Original description follows.


all-done (test.yml) and all-done-actionlint (actionlint.yml) have no status function in if, so GitHub applies success() implicitly: when a needed job fails or is cancelled, these jobs are skipped rather than failed, and a skipped required check counts as passing. Since both are required checks and main uses a merge queue, a merge group whose tests fail can still be merged by the queue (on regular PRs the red jobs are visible, but the required checks don't block).

This applies the pattern already used by all-done-validate in validate.yml: run with if: ${{ !cancelled() }} and fail unless every needed job succeeded (skipped is still accepted, as there). No change when everything passes.

Discussed privately with the security team, who suggested handling it as a regular PR.

kolyshkin and others added 3 commits November 11, 2026 15:19
When a job is skipped (e.g. because it is only applicable to pull
requests), all the jobs that need it are skipped, too, including
all-done-validate. To work around it, the PR-only commit job had its
pull_request condition on the step rather than on the job.

Instead, run all-done-validate unless the workflow is cancelled, and
explicitly fail it if any of the needed jobs has failed or was
cancelled (but not skipped).

Now the commit job condition can be moved to the job level.

(cherry picked from commit 4e2d2c5)
Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
Without a status function in its if, all-done is skipped (not failed)
when a needed job fails or is cancelled, and a skipped required check
counts as passing, also in the merge queue. Use the same pattern as
all-done-validate in validate.yml.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Vx41jkTKgrWAx3u5A78K5p

Signed-off-by: Lucas Sotomayor <sotomayorlucas@pm.me>
(cherry picked from commit d0de2df)
Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
It only wraps the single actionlint job and, having no status function,
is skipped (and passes as a required check) when actionlint fails. Drop
it and require actionlint itself instead, as suggested in review.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Vx41jkTKgrWAx3u5A78K5p
Signed-off-by: Lucas Sotomayor <sotomayorlucas@pm.me>
(cherry picked from commit c172dc9)
Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
@kolyshkin kolyshkin added the backport/1.5-pr A backport PR to release-1.5 label Nov 11, 2026
@kolyshkin

Copy link
Copy Markdown
Contributor Author

Note the first commit is a backport of 4e2d2c5 ("ci: let all-done-validate tolerate skipped jobs", from #5510), which adds the all-done-validate pattern that #5609 refers to; without it, all-done-validate on release-1.5 still has the same issue.

@kolyshkin kolyshkin added this to the 1.5.3 milestone Nov 12, 2026
@kolyshkin

Copy link
Copy Markdown
Contributor Author

merging without review as this is a backport and in order to fix 1.5 CI

@kolyshkin
kolyshkin merged commit c74288c into opencontainers:release-1.5 Nov 12, 2026
57 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport/1.5-pr A backport PR to release-1.5

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants