Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

E2E cluster

Runs test/e2e/cluster – the suite that walks the converging modules across two real k3d clusters, then runs the other five acting modules against the cluster the first walk initialised.

It is not a check on every push. It stands up two clusters, pulls three zarf packages, and runs a real zarf init against each, which makes it the slowest and least hermetic thing in this repository; the first run on a cold cache pays for the package pulls. Everything it covers that can be covered without a cluster already is, by the unit tests and by e2e.yaml – which includes every acting module’s refusals and check-mode answers, so what is left here is the half that needs a registry, a cluster state or something deployed to take away.

So it runs in two cases only: on demand from the Actions tab (workflow_dispatch), and on a pull request carrying the e2e-cluster label. The job’s if: condition enforces both, which is why adding the label to an open pull request is enough to start a run.

The job installs Go, Python, ansible-core, k3d and zarf, then runs test:endToEndCluster with a 90-minute timeout and tears down any surviving clusters with test:cleanClusters under if: always().

One step is easy to mistake for boilerplate: mkdir -p /tmp/k3d. Both k3d configs bind-mount that directory into the nodes as the local-path provisioner’s root, k3d does not create it, and a missing bind source fails the cluster create before any test runs.

The Go build is fully vendored, but the suite itself does reach the network to pull packages, so GOPROXY=off closes the module proxy only – not the network.