Skip to content

docker: per-client images + standalone orchestrator image via build matrix#10

Merged
samcm merged 2 commits into
mainfrom
chore/per-client-docker-images
May 22, 2026
Merged

docker: per-client images + standalone orchestrator image via build matrix#10
samcm merged 2 commits into
mainfrom
chore/per-client-docker-images

Conversation

@samcm

@samcm samcm commented May 21, 2026

Copy link
Copy Markdown
Member

Replaces the single combined image with one multi-target Dockerfile that builds a separate image per engine (lighthouse, teku, lodestar, nimbus, grandine) plus a standalone orchestrator image, each pushed as :<thing>-latest and :<thing>-<sha>. A GitHub Actions matrix builds and pushes each in its own parallel job (fail-fast off, per-image gha cache, initialising only that job's submodule), so cross-client runs can fan out one job per client.

Locally built + smoke-tested: orchestrator, lodestar, nimbus images (manifest + orchestrator->engine wiring; nimbus runtime libs confirmed via ldd). lighthouse/teku/grandine pass docker build --check and get verified by the matrix on merge (teku mirrors the previous working image). Merging triggers the workflow to build/push all six tag sets.

samcm added 2 commits May 22, 2026 01:45
…atrix

Replace the single combined image with one multi-target Dockerfile that builds a
separate image per engine (lighthouse, teku, lodestar, nimbus, grandine) plus a
standalone orchestrator image, each tagged :<thing>-latest and :<thing>-<sha>.
A GitHub Actions matrix builds/pushes each in its own parallel job (fail-fast off,
per-image gha cache, init only that job's submodule). Orchestrator gains clean
--help/--version exit codes; k8s benchmark points at :lighthouse-latest.
…lone teku submodule when in-container .git pointer is invalid

The teku wrapper's record compact constructor used committeeBits = requireNonNull(committeeBits),
which Error Prone rejects as a self-assignment, breaking :fcr-simulator-engine:compileJava (and
the docker build). Use a plain null check. Also make the teku builder stage reclone the pinned
teku SHA when the COPYed submodule .git pointer is unusable inside the build container.
Verified: docker buildx build --target teku and --target grandine both build + --manifest-json OK.
@samcm
samcm merged commit b82f5a9 into main May 22, 2026
@samcm
samcm deleted the chore/per-client-docker-images branch May 22, 2026 01:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant