Skip to content

chore(ci): bump hive consume runner to self hosted#1855

Closed
spencer-tb wants to merge 3 commits intoethereum:forks/osakafrom
spencer-tb:ci/hive-consume-runner-bump
Closed

chore(ci): bump hive consume runner to self hosted#1855
spencer-tb wants to merge 3 commits intoethereum:forks/osakafrom
spencer-tb:ci/hive-consume-runner-bump

Conversation

@spencer-tb
Copy link
Contributor

@spencer-tb spencer-tb commented Dec 6, 2025

🗒️ Description

Should fix the existing hive consume CI failures.

🔗 Related Issues or PRs

N/A.

✅ Checklist

  • All: Ran fast tox checks to avoid unnecessary CI fails, see also Code Standards and Enabling Pre-commit Checks:
    uvx tox -e static
  • All: PR title adheres to the repo standard - it will be used as the squash commit message and should start type(scope):.
  • All: Considered adding an entry to CHANGELOG.md.
  • All: Considered updating the online docs in the ./docs/ directory.
  • All: Set appropriate labels for the changes (only maintainers can apply labels).

@spencer-tb spencer-tb added C-chore Category: chore A-ci Area: Continuous Integration labels Dec 6, 2025
@codecov
Copy link

codecov bot commented Dec 6, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 87.31%. Comparing base (843178f) to head (b97e74c).
⚠️ Report is 10 commits behind head on forks/osaka.

Additional details and impacted files
@@             Coverage Diff              @@
##           forks/osaka    #1855   +/-   ##
============================================
  Coverage        87.31%   87.31%           
============================================
  Files              541      541           
  Lines            32832    32832           
  Branches          3015     3015           
============================================
  Hits             28668    28668           
  Misses            3557     3557           
  Partials           607      607           
Flag Coverage Δ
unittests 87.31% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Copy link
Collaborator

@LouisTsai-Csie LouisTsai-Csie left a comment

Choose a reason for hiding this comment

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

LGTM, but what is the main reason for the failing CI?

Copy link
Member

@danceratopz danceratopz left a comment

Choose a reason for hiding this comment

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

LGTM, but what is the main reason for the failing CI?

The CI failed to (even) build hive the client before the timeout in "Start hive in dev mode" and silently failed:
https://github.com/ethereum/execution-specs/actions/runs/19991793699/job/57333576450?pr=1855#step:8:113

We need to:

  1. Make sure we fail in the build step if the build times out :)
  2. Increase the timeout.

Taking a look now!

@spencer-tb
Copy link
Contributor Author

spencer-tb commented Dec 8, 2025

It failed because the runners didn't have enough disk space. Well one of the fails:

ERR image build failed image=hive/simulators/ethereum/eels/consume-sync:latest err="write /root/.cache/ethereum-execution-spec-tests/cached_downloads/ethereum/execution-spec-tests/v5.3.0/fixtures_develop/fixtures/state_tests/static/state_tests/stTimeConsuming/sstore_combinations_initial01_Paris.json: no space left on device"

Copy link
Member

@danceratopz danceratopz left a comment

Choose a reason for hiding this comment

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

I just tried a small hotfix in this workflow: To use .github/configs/hive/latest.yaml instead of .github/configs/hive/master.yaml.

I tried this because I thought the latter built from a github clone of master and this change would speed-up the built and avoid the timeout. This was incorrect (as master.yaml pulls images too, just from a different source, ethquokaops). CI passed anyway, which I don't fully understand... 🙃
https://github.com/ethereum/execution-specs/actions/runs/20025131146/job/57420643962?pr=1855#step:8:113

Anyway, I will work on adding a more robust gh action for starting Hive in dev mode as a separate PR. As we currently have ci code duplicated for this:

  • .github/workflows/hive-consume.yaml (in this workflow), and,
  • .github/actions/build-benchmark-genesis/action.yaml (which is more robust).

@spencer-tb
Copy link
Contributor Author

It just wanted some attention! Attention was given by all and the CI feels loved again so it pass 😅

@danceratopz
Copy link
Member

It failed because the runners didn't have enough disk space. Well one of the fails:

ERR image build failed image=hive/simulators/ethereum/eels/consume-sync:latest err="write /root/.cache/ethereum-execution-spec-tests/cached_downloads/ethereum/execution-spec-tests/v5.3.0/fixtures_develop/fixtures/state_tests/static/state_tests/stTimeConsuming/sstore_combinations_initial01_Paris.json: no space left on device"

I didn't spot this in the last failing log though? Perhaps I need to hone my search skills.
https://github.com/ethereum/execution-specs/actions/runs/19991793699/job/57333576441?pr=1855

@danceratopz
Copy link
Member

danceratopz commented Dec 8, 2025

CI passed anyway, which I don't fully understand... 🙃 https://github.com/ethereum/execution-specs/actions/runs/20025131146/job/57420643962?pr=1855#step:8:113

Looking at this again:
image

The only way that the linked run above passed is that "Start hive in dev mode" finished building the required hive images client image and starting hive by the time that "Run consume in dev mode" had finished installing. I.e., we got lucky :)

Anyway, I will work on adding a more robust gh action for starting Hive in dev mode as a separate PR.

So this seems worthwhile.

@danceratopz
Copy link
Member

@spencer-tb I reverted the client config change (as it was unrelated to this pr and did not provide a proper fix anyway) and instead hardened the consume hive flow here: #1861 (whose CI is now failing due to no space left on device 😭).

@spencer-tb
Copy link
Contributor Author

LMAO! Shall we merge this then rebase your PR?

@spencer-tb
Copy link
Contributor Author

CIFO: #1861

@spencer-tb spencer-tb closed this Dec 8, 2025
SamWilsn pushed a commit that referenced this pull request Dec 9, 2025
…ckhainEngineXFixture` with other formats (#1855)

* feat(fill): add --generate-all-formats flag for comprehensive fixture generation

Add new --generate-all-formats command line option that enables generation of all
fixture formats including BlockchainEngineXFixture in a single command execution.

Key changes:
- Add --generate-all-formats CLI option with two-phase execution support.
- Phase 1: Generate pre-allocation groups (same as --generate-pre-alloc-groups).
- Phase 2: Generate ALL supported fixture formats (vs only BlockchainEngineXFixture).
- Update FixtureOutput class to handle new generate_all_formats parameter.
- Preserve --generate-all-formats flag in phase 2 execution for proper format selection.
- Maintain backward compatibility with existing --generate-pre-alloc-groups workflow.

This makes BlockchainEngineXFixture a first-class citizen alongside other fixture
formats, enabling comprehensive test coverage generation in a single command while
leveraging the performance optimizations of pre-allocation groups.

* docs(fill): update docs for `--generate-all-formats`

* tests(fill): add unit tests for `--generate-all-formats`

* feat(fill): auto-enable `--generate-all-formats` if tarball output

* test(fill): add tests for enabling `--generate-all-formats` for tar.gz

* docs(fill): update docs for auto-enable of `--generate-all-formats` if .tar.gz

* docs: update changelog

* refactor(fill): extract helper methods in FillCommand

- Extract _should_use_two_phase_execution() method to simplify complex conditional logic.
- Extract _ensure_generate_all_formats_for_tarball() method for cleaner argument processing.
- Update create_executions() to use the new helper methods.

* refactor(fill): improve FixtureOutput auto-enable logic

- Add should_auto_enable_all_formats property to clarify auto-enable logic.
- Improve variable naming: should_generate_all_formats instead of generate_all_formats.
- Fix duplication: use existing is_tarball property logic instead of creating duplicate method.
- Update tests to use new field name.

* refactor(fill): simplify fixture format selection logic with proper phase enum

- Add ExecutionPhase enum with 4 distinct phases: NORMAL, PHASE_1_PREALLOC, PHASE_2_ENGINE_X_ONLY, PHASE_2_ALL_FORMATS.
- Extract _determine_execution_phase() method to encapsulate phase logic.
- Extract _is_blockchain_engine_x_fixture() helper for format checking.
- Extract _determine_fixture_formats() method to handle all 4 execution phases.
- Simplify pytest_generate_tests() from 40+ lines of nested conditionals to 2 clean lines.
SamWilsn pushed a commit that referenced this pull request Dec 9, 2025
…ckhainEngineXFixture` with other formats (#1855)

* feat(fill): add --generate-all-formats flag for comprehensive fixture generation

Add new --generate-all-formats command line option that enables generation of all
fixture formats including BlockchainEngineXFixture in a single command execution.

Key changes:
- Add --generate-all-formats CLI option with two-phase execution support.
- Phase 1: Generate pre-allocation groups (same as --generate-pre-alloc-groups).
- Phase 2: Generate ALL supported fixture formats (vs only BlockchainEngineXFixture).
- Update FixtureOutput class to handle new generate_all_formats parameter.
- Preserve --generate-all-formats flag in phase 2 execution for proper format selection.
- Maintain backward compatibility with existing --generate-pre-alloc-groups workflow.

This makes BlockchainEngineXFixture a first-class citizen alongside other fixture
formats, enabling comprehensive test coverage generation in a single command while
leveraging the performance optimizations of pre-allocation groups.

* docs(fill): update docs for `--generate-all-formats`

* tests(fill): add unit tests for `--generate-all-formats`

* feat(fill): auto-enable `--generate-all-formats` if tarball output

* test(fill): add tests for enabling `--generate-all-formats` for tar.gz

* docs(fill): update docs for auto-enable of `--generate-all-formats` if .tar.gz

* docs: update changelog

* refactor(fill): extract helper methods in FillCommand

- Extract _should_use_two_phase_execution() method to simplify complex conditional logic.
- Extract _ensure_generate_all_formats_for_tarball() method for cleaner argument processing.
- Update create_executions() to use the new helper methods.

* refactor(fill): improve FixtureOutput auto-enable logic

- Add should_auto_enable_all_formats property to clarify auto-enable logic.
- Improve variable naming: should_generate_all_formats instead of generate_all_formats.
- Fix duplication: use existing is_tarball property logic instead of creating duplicate method.
- Update tests to use new field name.

* refactor(fill): simplify fixture format selection logic with proper phase enum

- Add ExecutionPhase enum with 4 distinct phases: NORMAL, PHASE_1_PREALLOC, PHASE_2_ENGINE_X_ONLY, PHASE_2_ALL_FORMATS.
- Extract _determine_execution_phase() method to encapsulate phase logic.
- Extract _is_blockchain_engine_x_fixture() helper for format checking.
- Extract _determine_fixture_formats() method to handle all 4 execution phases.
- Simplify pytest_generate_tests() from 40+ lines of nested conditionals to 2 clean lines.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-ci Area: Continuous Integration C-chore Category: chore

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants