Skip to content

feat(spec-specs): EIP-8037 - check static context upfront in CREATE o… #3

feat(spec-specs): EIP-8037 - check static context upfront in CREATE o…

feat(spec-specs): EIP-8037 - check static context upfront in CREATE o… #3

Workflow file for this run

name: Hive Consume
on:
push:
branches:
- "forks/**"
paths-ignore:
- "**.md"
- "LICENSE*"
- ".gitignore"
- ".vscode/**"
- "whitelist.txt"
- "docs/**"
- "mkdocs.yml"
pull_request:
paths:
- ".github/workflows/hive-consume.yaml"
- ".github/actions/start-hive-dev/**"
- ".github/actions/cache-docker-images/**"
- ".github/actions/load-docker-images/**"
- ".github/configs/hive/**"
- "packages/testing/src/execution_testing/cli/pytest_commands/consume.py"
- "packages/testing/src/execution_testing/cli/pytest_commands/build_block.py"
- "packages/testing/src/execution_testing/cli/pytest_commands/pytest_ini_files/pytest-consume.ini"
- "packages/testing/src/execution_testing/cli/pytest_commands/plugins/consume/**"
- "packages/testing/src/execution_testing/cli/pytest_commands/plugins/pytest_hive/**"
- "packages/testing/src/execution_testing/fixtures/consume.py"
- "packages/testing/src/execution_testing/rpc/**"
workflow_dispatch:
inputs:
docker_images:
description: "Space-separated list of Docker images to cache"
required: false
default: "docker.io/ethereum/client-go:latest docker.io/alpine:latest docker.io/library/golang:1-alpine"
client:
description: "Hive client to test (e.g., go-ethereum, besu)"
required: false
default: "go-ethereum"
client_file:
description: "Client config file name under .github/configs/hive/ (e.g., latest.yaml, master.yaml)"
required: false
default: "latest.yaml"
workflow_call:
inputs:
docker_images:
description: "Space-separated list of Docker images to cache"
required: false
type: string
default: "docker.io/ethereum/client-go:latest docker.io/alpine:latest docker.io/library/golang:1-alpine"
client:
description: "Hive client to test (e.g., go-ethereum, besu)"
required: false
type: string
default: "go-ethereum"
client_file:
description: "Client config file name under .github/configs/hive/ (e.g., latest.yaml, master.yaml)"
required: false
type: string
default: "latest.yaml"
concurrency:
group: hive-consume-${{ github.workflow }}-${{ github.ref || github.run_id }}
cancel-in-progress: ${{ github.ref_name != github.event.repository.default_branch }}
env:
# Use direct URL instead of release spec (e.g., develop@v5.3.0) to avoid GitHub API rate limits
FIXTURES_URL: https://github.com/ethereum/execution-spec-tests/releases/download/v5.3.0/fixtures_develop.tar.gz
jobs:
cache-docker-images:
name: Cache Docker Images
runs-on: [self-hosted-ghr, size-l-x64]
steps:
- name: Checkout execution-specs
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Cache Docker images
uses: ./.github/actions/cache-docker-images
with:
images: ${{ inputs.docker_images || 'docker.io/ethereum/client-go:latest docker.io/alpine:latest docker.io/library/golang:1-alpine' }}
test-hive:
name: ${{ matrix.name }}
needs: cache-docker-images
runs-on: [self-hosted-ghr, size-l-x64]
env:
CLIENT: ${{ inputs.client || 'go-ethereum' }}
CLIENT_FILE: ${{ inputs.client_file || 'latest.yaml' }}
strategy:
fail-fast: true
matrix:
include:
- name: Engine
mode: simulator
simulator: ethereum/eels/consume-engine
sim_limit: ".*test_block_at_rlp_limit_with_logs.*Osaka.*"
# TODO: Enable once eels/consume-enginex simulator is added to Hive
# - name: consume-enginex
# mode: simulator
# simulator: ethereum/eels/consume-enginex
# sim_limit: ".*push0.*(Shanghai|Cancun).*"
- name: RLP
mode: simulator
simulator: ethereum/eels/consume-rlp
sim_limit: ".*test_block_at_rlp_limit_with_logs.*Osaka.*"
- name: Sync
mode: simulator
simulator: ethereum/eels/consume-sync
sim_limit: ".*test_block_at_rlp_limit_with_logs.*Osaka.*"
- name: Dev Mode Consume Engine
mode: dev
cli_command: consume engine
test_filter: "Osaka and test_block_at_rlp_limit_with_logs"
# TODO: Enable once we have a release with the pre-alloc builder format cf #2140
# - name: Dev Mode Consume EngineX
# mode: dev
# cli_command: consume enginex
# test_filter: "(fork_shanghai or fork_cancun) and push0"
# NOTE: build-block uses testing_buildBlockV1 on the HTTP RPC port
# (8545), which has a smaller body cap than the Engine API port
# (8551); avoid filters that target near-block-size-limit tests.
- name: Dev Mode Build Block
mode: dev
cli_command: build-block
test_filter: "Osaka and test_clz_stack_underflow"
# TODO: Enable once eels/build-block simulator is added to Hive
# - name: Build Block
# mode: simulator
# simulator: ethereum/eels/build-block
# sim_limit: ".*test_block_at_rlp_limit_with_logs.*Osaka.*"
steps:
- name: Checkout execution-specs
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
path: execution-specs
- name: Checkout Hive
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
repository: ethereum/hive
ref: master
path: hive
# Redirect Go's caches to a per-job temp dir so the setup-go cache
# restore doesn't collide with a persistent $GOMODCACHE on
# self-hosted runners (see build-benchmark-genesis/action.yaml).
- name: Use ephemeral Go cache dirs
shell: bash
run: |
echo "GOMODCACHE=${{ runner.temp }}/go/mod" >> "$GITHUB_ENV"
echo "GOCACHE=${{ runner.temp }}/go/build" >> "$GITHUB_ENV"
- name: Setup go env and cache
uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6.3.0
with:
go-version: ">=1.24"
cache-dependency-path: hive/go.sum
- name: Install uv and python
if: matrix.mode == 'dev'
uses: ./execution-specs/.github/actions/setup-uv
with:
cache-dependency-glob: "execution-specs/uv.lock"
- name: Setup environment
if: matrix.mode == 'dev'
uses: ./execution-specs/.github/actions/setup-env
- name: Load cached Docker images
uses: ./execution-specs/.github/actions/load-docker-images
- name: Build hive
run: |
cd hive
go build .
- name: Run simulator tests
if: matrix.mode == 'simulator'
run: |
cd hive
./hive --sim '${{ matrix.simulator }}' \
--sim.parallelism=1 \
--client ${{ env.CLIENT }} \
--client-file ../execution-specs/.github/configs/hive/${{ env.CLIENT_FILE }} \
--sim.buildarg fixtures=${{ env.FIXTURES_URL }} \
--sim.limit="${{ matrix.sim_limit }}" \
--sim.loglevel=5 \
--docker.buildoutput \
--docker.output
- name: Build Hive client images
if: matrix.mode == 'dev'
run: |
cd hive
./hive \
--client ${{ env.CLIENT }} \
--client-file ../execution-specs/.github/configs/hive/${{ env.CLIENT_FILE }} \
--docker.buildoutput
timeout-minutes: 10
- name: Start Hive in dev mode
if: matrix.mode == 'dev'
id: start-hive
uses: ./execution-specs/.github/actions/start-hive-dev
with:
clients: ${{ env.CLIENT }}
client-file: execution-specs/.github/configs/hive/${{ env.CLIENT_FILE }}
hive-path: hive
timeout: "30"
- name: Run dev mode command
if: matrix.mode == 'dev'
working-directory: execution-specs
env:
HIVE_SIMULATOR: ${{ steps.start-hive.outputs.hive-url }}
run: |
uv sync --all-extras
uv run ${{ matrix.cli_command }} --input ${{ env.FIXTURES_URL }} -k "${{ matrix.test_filter }}"
- name: Upload Hive logs
if: always()
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: hive-logs-${{ matrix.name }}
path: hive/workspace/
retention-days: 7