Repository navigation
Add an 'All checks' aggregate job to the pupmod PR Tests - #118
Merged
Merged
Conversation
GitHub only blocks a merge on status checks that branch protection lists
by name, so a failing job that isn't listed doesn't stop a merge, and
listing every job (one check per matrix combination) would have to track
every template change in every repo.
Both pupmod pr_tests.yml templates gain an `all-checks` job ('All
checks') that needs every other job, runs with `if: always()`, and fails
unless each needed job succeeded. Branch protection can then require that
one check. Jobs with `continue-on-error` (the experimental spec rows)
still report success, so they stay non-blocking.
merge_gha_workflows removes the template's acceptance job from modules
that have none, which would leave `needs: [..., acceptance]` naming a
missing job, a workflow GitHub rejects. The task now drops any job it
removes from every other job's `needs:` (scalar, flow or block
sequence), and removes the `needs:` key when nothing is left.
Add the 20261014-all-checks-job session to roll the job out to the
pupmod fleet, and point latest.yaml at it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
hcaballero2
reviewed
Oct 15, 2026
hcaballero2
left a comment
Contributor
There was a problem hiding this comment.
One small thing on the aggregate job's if:; otherwise the merge logic and the rollout notes look right to me.
hcaballero2
approved these changes
Oct 15, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
GitHub only blocks a merge on status checks that branch protection lists by name. A failing job that isn't listed (Ruby Style, before any repo required it) leaves the PR red but mergeable. Listing every job doesn't scale either: each matrix combination is its own check (
acceptance (docker_alma8), ...), so the list would have to follow every template change in every repo.Change
all-checksjob ('All checks') in both pupmodpr_tests.ymltemplates. It needs every other PR Tests job, runs withif: always(), prints each job's result, and fails unless every needed job succeeded. Failed, cancelled and skipped all fail it. (In this template a job is only skipped when a job it needs failed, so that's already a failure.) Jobs withcontinue-on-errorreport success toneeds, so the experimental spec rows stay non-blocking. The job usesjqon the runner rather than a third-party action such asre-actors/alls-green, so the required check depends on no outside code.merge_gha_workflows: modules without acceptance suites have the template'sacceptancejob removed (preserve_blocks: jobs.acceptance). That would leaveneeds: [..., acceptance]naming a missing job, which actionlint and GitHub reject (job "all-checks" needs job "acceptance" which does not exist). Any job the task removes is now also dropped from every other job'sneeds:. That covers a scalar, a flow sequence and a block sequence, and theneeds:key goes when nothing is left.20261014-all-checks-jobsession: mergespr_tests.ymlacross the pupmod fleet (github-orgrepolist), keeping each repo'sjobs.acceptance.latest.yamlnow points at it.Rollout order
puppetsync/20261003-gate-ruby-stylePRs first. Before that, this session's PRs would also carry their Ruby Style change.All checksstatus check in each repo's branch protection. Requiring it before the job exists leaves every PR waiting for a check that never reports.The seven rubygem repos have their own, non-templated PR workflows. They need the same job added by hand, and
rubygem-simp-beaker-helpersandrubygem-simp-rake-helpersneed one per workflow (pr_tests.ymlandpr_acceptance.yml), becauseneeds:can't cross workflows.Testing
needs:; a job the repo has stays listed; a module without acceptance gets an aggregate that needs exactly its remaining jobs.rspec: 254 examples, 0 failures. Plan specs: 31 examples, 0 failures.infoon the acceptance job'sbeaker:suites[...]line). Without theneeds:pruning, actionlint rejects the no-acceptance output.bolt plan run puppetsync options='{"list_pipeline_stages": true}'lists the session's stages.🤖 Generated with Claude Code