Skip to content

.github/workflows: feed hive-eest fixtures from cache instead of per-run CDN download - #21882

Merged
lystopad merged 4 commits into
mainfrom
feature/lystopad/hive-eest-local-fixtures
Jun 18, 2026
Merged

.github/workflows: feed hive-eest fixtures from cache instead of per-run CDN download#21882
lystopad merged 4 commits into
mainfrom
feature/lystopad/hive-eest-local-fixtures

Conversation

@lystopad

Copy link
Copy Markdown
Member

Problem

test-hive-eest's eels simulators download the fixtures tarball from the GitHub release CDN inside the image build (consume cache --input <url>). With hive's --docker.nocache, that download repeats on every run — slow, exposed to transient release-CDN 504s, and bypassing the hardened tools/test-fixtures.sh entirely.

Change

Feed the fixtures from cache + a hardened fetch, and hand them to the sim locally:

  • Restore the EEST tarballs from the base-branch cache warmed by cache-warming-eest-fixtures.ymlrestore-only (the warmer owns saving, so no per-ref duplicates).
  • Fallback on a cache miss: the hardened tools/test-fixtures.sh (5-min exponential backoff).
  • Stage the matrix tarball into the eels sim build context and pass --sim.buildarg fixtures=/fixtures, so the sim's consume reads a local directory instead of downloading.

The branch build-arg (devnet consume/execution-specs selection) is unchanged.

Hive dependency (now merged)

The local-fixtures eels Dockerfiles landed in erigontech/hive#2 (merged into yperbasis/client-pool). The hive ref is pinned to that merge commit (9afe5f15).

Validation

End-to-end verified on a real runner via workflow_dispatch (run 27152648786): exact-key cache hit (no CDN download), staged tarball picked up by the eels build, and consume engine ran the full paris+shanghai shard — 3573 tests, 0 failed. The fixtures-directory layout was also confirmed against execution-specs/consume locally (it accepts the extracted dir and recursively builds its index).

lystopad added 3 commits June 8, 2026 18:41
…N download

test-hive-eest's eels sims download the fixtures tarball from the GitHub
release CDN inside the image build, and with --docker.nocache that repeats on
every run — slow and exposed to transient 504s (and bypassing the hardened
tools/test-fixtures.sh entirely).

Restore the EEST tarballs from the base-branch cache warmed by
cache-warming-eest-fixtures.yml (restore-only; the warmer owns saving), fall
back to the hardened tools/test-fixtures.sh on a miss, stage the matrix
tarball into the eels sim build context, and pass --sim.buildarg
fixtures=/fixtures so the sim consumes the local fixtures instead of
downloading.

Requires the local-fixtures eels Dockerfiles from erigontech/hive#2; the hive
ref is pinned to that branch's HEAD for end-to-end CI validation.
…-fixtures

erigontech/hive#2 merged into yperbasis/client-pool; pin to that merge commit
(9afe5f15) instead of the now-merged feature branch HEAD.
@lystopad
lystopad requested a review from mriccobene as a code owner June 18, 2026 09:43
@lystopad
lystopad requested a review from taratorio June 18, 2026 09:45
@lystopad lystopad self-assigned this Jun 18, 2026
@lystopad
lystopad requested a review from yperbasis June 18, 2026 09:53
@lystopad
lystopad enabled auto-merge June 18, 2026 09:53
@yperbasis yperbasis added the QA label Jun 18, 2026
@yperbasis
yperbasis requested a review from Copilot June 18, 2026 10:04

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates the test-hive-eest GitHub Actions workflow to stop downloading EEST fixture tarballs from the GitHub release CDN inside the eels simulator image build, and instead provide fixtures locally from a warmed GitHub Actions cache with a hardened fallback download path.

Changes:

  • Pin Hive checkout to a commit that supports local-fixtures for the eels simulators.
  • Restore EEST fixture tarballs from a base-branch-warmed cache (with a fallback to tools/test-fixtures.sh on cache miss).
  • Stage the fixture tarball into the simulator build context and switch the simulator build arg from a CDN URL to /fixtures.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread .github/workflows/test-hive-eest.yml Outdated

@yperbasis yperbasis left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approving. Minor / non-blocking:

  • Combined cache restores all four tarballs (~2.4 GB) per shard though each uses only one (eest_stable/eest_devnet); eest_benchmark/eest_zkevm are never used by this matrix. Per-tarball cache keys would cut restore reads across the ~11 jobs (~26 GB → ~5 GB) — warmer-side follow-up at most.
  • Stale warmer doc: cache-warming-eest-fixtures.yml's header still says it serves only test-eest-spec.yml; this PR adds a second consumer.
  • Exact cache hit skips sha256 verification (only the miss/download path verifies via test-fixtures.sh) — fine given the warmer verifies before save and write-scoping is restricted, just a slight asymmetry.
  • Pre-existing: the Read pinned Hive ref step's outputs.ref is unused (the ref is hardcoded inline).

…ion)

On a cache miss we only need the .tar.gz to stage into the eels sim build
context — the eels Dockerfile extracts it. Pass --download-only to
tools/test-fixtures.sh so it fetches + sha256-verifies the tarball without
extracting the multi-GB corpus. (Addresses Copilot review on #21882.)
@lystopad
lystopad added this pull request to the merge queue Jun 18, 2026
Merged via the queue into main with commit 290de62 Jun 18, 2026
91 checks passed
@lystopad
lystopad deleted the feature/lystopad/hive-eest-local-fixtures branch June 18, 2026 11:27
@taratorio

Copy link
Copy Markdown
Member

@lystopad can you please upstream this to Hive? Otherwise this change will not be applied once we switch back the Hive EEST jobs to use ethereum/hive instead of erigontech/hive. This will likely happen in a few weeks time once we can switch to using enginex fixtures instead of Andrew's branch which has pooling.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants