Skip to content

feat: embedded fill Dockerfile + state-actor/eest build-run CI#254

Merged
skylenet merged 2 commits into
masterfrom
state-actor-build-workflow
Jun 30, 2026
Merged

feat: embedded fill Dockerfile + state-actor/eest build-run CI#254
skylenet merged 2 commits into
masterfrom
state-actor-build-workflow

Conversation

@skylenet

@skylenet skylenet commented Jun 30, 2026

Copy link
Copy Markdown
Member

Follow-up to #248. Two related changes that, together, let CI exercise the full state-actoreest_payloadsrun pipeline on a GitHub-hosted runner.

1. Build the fill image from an embedded Dockerfile by default

builder.eest_payloads.fill_image and fill_dockerfile are now both optional. When neither is set, benchmarkoor builds the fill image from a Dockerfile.eest-filler embedded in the binary (go:embed). The Dockerfile copies nothing from the build context (execution-specs is bind-mounted at run time), so it builds against an empty temp dir written by resolveFillDockerfile and cleaned up afterwards.

  • Moved Dockerfile.eest-filler into pkg/builder/ so it can be embedded (.dockerignore doesn't exclude it, so the in-image Go build still embeds it).
  • BuildsFillImage() now also builds when no fill_image is configured; dropped the "one of fill_image/fill_dockerfile is required" validation.
  • Dropped the now-unnecessary fill_dockerfile line from the example configs; updated docs + config.example.yaml.
  • Tests: TestEmbeddedFillDockerfile, TestResolveFillDockerfile (configured + embedded paths, with cleanup), TestBuildsFillImage truth table.

2. state-actor + eest build/run e2e via the composite action

  • action.yaml — optional build phase (build-config / build-config-urls / build-args) that runs benchmarkoor build before the existing run step. Existing jobs are unaffected (the phase is skipped when no build config is passed).
  • ci.action.yaml — new state-actor job: builds OSAKA nethermind + besu snapshots, fills the compute bn128 subset with the besu filler, then replays the fixtures on nethermind and besu. datadir_method: copy + a 256 MB snapshot keep it within an ubuntu-latest runner. Runs on PRs (consistent with the other action jobs).

Validation

  • Full go test ./... green (except the pre-existing macOS-only /proc/mounts schelk tests); golangci-lint --new-from-rev=origin/master 0 issues; actionlint clean.
  • VM end-to-end with the embedded Dockerfile and no fill_dockerfile: fill image built from the embed → 36/36 filled (osaka bn128), nethermind + besu snapshots OK, replay 72/72 (36 each), 0 failed — including verifying cleanup_on_start does not wipe the freshly-built snapshots.

skylenet added 2 commits June 30, 2026 16:45
Make builder.eest_payloads.fill_image and fill_dockerfile both optional:
when neither is set, benchmarkoor builds the fill image from a
Dockerfile.eest-filler embedded in the binary (go:embed). The Dockerfile
copies nothing from the build context, so it builds against an empty
temp dir written by resolveFillDockerfile (cleaned up after the build).

Moves Dockerfile.eest-filler into pkg/builder so it can be embedded, and
drops the now-unnecessary fill_dockerfile line from the example configs,
docs, and config.example.yaml.
Add an optional build phase to the composite action (build-config /
build-config-urls / build-args) that runs `benchmarkoor build` before
the existing run step; existing jobs are unaffected. Add a state-actor
job to ci.action.yaml that builds OSAKA nethermind+besu snapshots, fills
the compute bn128 subset with the besu filler, then replays the fixtures
on nethermind and besu (datadir_method: copy, 256 MB snapshot).
@skylenet skylenet force-pushed the state-actor-build-workflow branch from 32f2a25 to 25e6ec1 Compare June 30, 2026 14:52
@skylenet skylenet merged commit 455ad72 into master Jun 30, 2026
7 checks passed
@skylenet skylenet deleted the state-actor-build-workflow branch June 30, 2026 15:20
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