e2e.yaml
Triggers: pull requests, merge groups.
Three jobs, “Basic build”:
- build-e2e - builds the
cargoshipbinary (CGO_ENABLED=0, fully vendored/offline build) and uploads it as an artifact. - e2e-noncluster (needs build-e2e) - downloads that binary and runs the non-cluster e2e test groups (misc and package commands), which need no Docker/bootloose infrastructure. Uses
-shortto additionally skip example packages, which would otherwise pull ~1.5GB of engine artifacts and images. - binary-size (needs build-e2e) - compares the PR’s binary size against the latest release’s binary and posts the diff as a sticky PR comment. Pull requests only; there is no pull request to comment on in a merge group.
The cluster-dependent e2e group is deliberately not run here - it needs Docker and provisions five containers, so it lives in its own workflow, e2e-cluster.yaml, on its own trigger. That workflow runs only the staging half, which starts no engine; the full walk installs single-controller k3s across its five machines and runs locally, not in CI.
build-e2e and e2e-noncluster are required status checks, which is why the merge_group trigger is here and why neither trigger carries a path filter. A path-filtered required check reports nothing at all on a change that only touches the ignored paths, so the check stays pending and the pull request can never be queued. The workflow used to skip CODEOWNERS-only changes; it now builds those too, which costs one build in the rare case and removes the stall.