Repository navigation
ci(pr): run a secret-free smoke on PRs, full matrix on demand - #5269
Merged
Merged
Conversation
ci-robbot
temporarily deployed
to
fork-pr-builds
October 6, 2026 12:55 — with
GitHub Actions
Inactive
ci-robbot
force-pushed
the
ci/pr-smoke-full-on-master
branch
from
October 6, 2026 12:56
78f21df to
7d576e0
Compare
ci-robbot
temporarily deployed
to
fork-pr-builds
October 6, 2026 12:56 — with
GitHub Actions
Inactive
ci-robbot
temporarily deployed
to
fork-pr-builds
October 6, 2026 12:56 — with
GitHub Actions
Inactive
mauromorales
approved these changes
Oct 6, 2026
Every push to a fork PR waited in the fork-pr-builds environment for a maintainer, and every approved push then started about 60 jobs. Most PRs here come from agent forks and get QA on a real boot, so the full matrix on each push was mostly queue and cost. 96 runs were waiting for approval when this change was written. pr.yaml now runs on plain pull_request with no secrets and no approval: unit tests, lint, the binary builds, the kairos-init image, one amd64 Hadron core ISO and the qemu install and acceptance suites. kairos-init reaches the ISO build as an OCI layout artifact, through a new oci_context_artifact input on the factory, because the run has no registry to push to. _build-iso.yaml gets a security_scans switch, since a fork's read-only token cannot upload SARIF. The old pipeline moves to pr-full.yaml. It runs only when somebody with write access adds the ci/full label. It builds the head commit from the label event, and its authorize job checks the labeler's permission and removes the label, instead of waiting on an environment. master.yaml still runs the full matrix on every push. pr-fork-checks.yaml is removed, because pr.yaml now covers fork PRs. Signed-off-by: Ettore Di Giacinto <mudler@kairos.io> Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The pull_request_target pipeline on master still uses the ci-pr- group, so it cancelled the smoke run on this branch as soon as both started. Signed-off-by: Ettore Di Giacinto <mudler@kairos.io> Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
ci-robbot
force-pushed
the
ci/pr-smoke-full-on-master
branch
from
October 6, 2026 13:17
7d576e0 to
5975b31
Compare
ci-robbot
temporarily deployed
to
fork-pr-builds
October 6, 2026 13:23 — with
GitHub Actions
Inactive
mudler
approved these changes
Oct 6, 2026
itxaka-agent
added a commit
to itxaka-agent/kairos
that referenced
this pull request
Oct 6, 2026
master split the PR pipeline (kairos-io#5269): pr.yaml is now a smoke run that builds only the amd64 core ISO, and the full matrix with the UKI ISOs moved to pr-full.yaml. The UKI size gate goes with them into pr-full.yaml's size-diff job. pr.yaml keeps the script's own test so it still runs on every PR. Also picks up 70e24cf, which fixes the edgevpn bundle failure in the install test. Co-authored-by: Itxaka <itxakaserrano@gmail.com> Signed-off-by: itxaka-agent <itxaka-agent@users.noreply.github.com>
This was referenced Oct 6, 2026
This was referenced Oct 8, 2026
This branch was previously deployed
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.
What this PR does / why we need it:
PR CI ran the full matrix on every push and, for any PR from a fork, waited in the
fork-pr-buildsenvironment first. Almost every PR here is now opened by an agent from a fork: 92 of 135 open PRs come fromci-forksalone. When this was written, 96 PR runs were waiting for approval. Every approved push then started about 60 jobs. Agents also run QA on a real boot before merge, so the full matrix now runs on master only, and on a PR only when a maintainer asks for it.Changes:
pr.yamlnow uses the plainpull_requesttrigger, with no secrets, no environment and no approval. It runs:installandacceptancesuitesNothing is pushed.
The kairos-init image reaches the ISO build as an OCI layout artifact, not as a registry image:
_build-image-kairos-init.yamlgets anoci_artifactinput.reusable-factory.yamlgetsoci_context_artifactandoci_context_name, which bind the layout as a named build context for theFROM ${KAIROS_INIT_IMAGE}._build-iso.yamlpasses these through askairos_init_artifact._build-iso.yamlgets asecurity_scansswitch, defaulttrue. The smoke turns it off because a fork's read-only token cannot upload SARIF. master still scans every image.pr-full.yamlis the oldpr.yaml, now triggered only by theci/fulllabel (pull_request_target,types: [labeled]). There is no environment. Theauthorizejob:Every checkout is pinned to
pull_request.head.shafrom the label event, so a push after the label does not change what runs. The CodeQL rationale in the header is updated to match.pr-fork-checks.yamlis removed.pr.yamlnow covers fork PRs without a gate.master.yamlis unchanged apart from comments that now point topr-full.yaml. The Makefile workflow-lint lists includepr-full.yaml.Before merge, a maintainer needs to:
ci/fulllabel. It does not exist yet, and I could not create it because this account has triage access only.fork-pr-buildsenvironment. Nothing references it after this change.Note on trust: any account with write access can start
pr-full.yamlby adding the label, bot accounts included. Adding the label is the review of the diff.How it was checked:
make lint-workflows(yamllint strict and actionlint) passes.reusable-factory.yamlreports the same 107 existing shellcheck findings on master and on this branch, so the change adds none.FROM ${KAIROS_INIT_IMAGE}from anoci-layout://build context made bybuildx --output type=ocifrom a two-platform build, with--load.PRrun is the end-to-end test of the new smoke path: no approval, read-only token, no registry.pr-full.yamlcannot run on this PR, becausepull_request_targetuses the workflow from master. It can only be tried after merge, with the label.installandacceptancesuites. An earlier run on the older base failedinstallwith the master: test-core install is red on both legs because a top-level bundles: entry never lands its files #5132 bundles regression, which fix(sysext): stop merging extensions over the persistent partition #5115 fixed in the meantime. The rebase onto current master made it green.Which issue(s) this PR fixes:
Fixes #4296
AI disclosure: Claude Code wrote this change and the description, at the request of a maintainer (@mudler). No human read the code before this PR was opened.
🤖 Generated with Claude Code