build(harness): package the integration suite as a container image (cutover)#441
Conversation
Add test/integration/Dockerfile — `go test -c -tags integration` → distroless/nonroot binary whose entrypoint runs the selected suite (args: -test.run TestX). The fault + seiload manifests are //go:embed-ed, so the binary is self-contained (no scenario files to COPY). Add the "Build and push integration-harness" step to ecr.yml (mirrors the seitask step), and re-include test/integration's *_test.go + *.tmpl in .dockerignore (both excluded by the existing rules; the harness is entirely build-tagged _test.go). First step of the cutover that retires the seitask-runner image + the Chaos-Mesh Workflow nightly. Validated locally: image builds, and the binary lists TestBenchmark/TestChaosSuite/TestChainUpgrade/TestRelease. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
PR SummaryLow Risk Overview A new
Reviewed by Cursor Bugbot for commit 46b8363. Bugbot is set up for automated code reviews on this repo. Configure here. |
…mage Per the supply-chain review: the harness image is a test-image build over the whole test tree; sharing the controller's mode=max build cache would let a poisoned test-build layer reach the production controller image. Give the harness build its own cache ref (sei/build-cache:integration-harness). Note in .dockerignore that the re-included test files enter the controller/seitask contexts but are inert there. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
What
First cutover step toward retiring the seitask-runner image + Chaos-Mesh Workflow nightly.
test/integration/Dockerfile—go test -c -tags integration→ distroless/nonroot binary; entrypoint runs the selected suite via-test.run TestX. Fault + seiload manifests are//go:embed-ed, so the binary is self-contained (no scenario files to COPY).ecr.yml— adds "Build and push integration-harness" (mirrors the seitask step) → pushessei/integration-harness:<sha>..dockerignore— re-includestest/integration/**/*_test.go+*.tmpl(both excluded by the existing**/*_test.go+**rules; the harness is entirely build-tagged_test.go).The
sei/integration-harnessECR repo is already provisioned (platform terraform, applied). Per the design discussion, thego test -cform is deliberate — it's the conventional in-cluster e2e pattern (k8se2e.test), and_test.go+ the build tag give a Go-enforced guarantee the suites can't leak into the controller binary.Test
Validated locally (
linux/amd64): image builds, and the binary listsTestBenchmark / TestChaosSuite / TestChainUpgrade / TestRelease. The ecr.yml push step runs only on merge-to-main (the repo now exists).🤖 Generated with Claude Code