Hive - BAL Devnet 2 Quick #39
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Hive - BAL Devnet 2 Quick | |
| on: | |
| schedule: | |
| - cron: "45 12 * * *" | |
| workflow_dispatch: | |
| inputs: | |
| client: | |
| type: string | |
| default: '"go-ethereum","nethermind","nimbus-el","erigon", "besu", "reth"' | |
| description: Comma-separated list of clients to test .e.g go-ethereum, besu, reth, nethermind, erigon, nimbus-el | |
| simulator: | |
| type: string | |
| # TODO: add back "ethereum/eels/consume-rlp" when clients have bal-devnet-2 branch | |
| default: >- | |
| "ethereum/eels/consume-engine" | |
| description: >- | |
| Comma-separated list of simulators to test | |
| .e.g ethereum/eels/consume-engine, ethereum/eels/consume-rlp | |
| hive_version: | |
| type: string | |
| default: ethereum/hive@master | |
| description: GitHub repository and tag for hive (repo@tag) | |
| client_source: | |
| type: choice | |
| default: docker | |
| description: >- | |
| How client images should be sourced. | |
| 'git' will use the github repo and tag (See client_repos). | |
| 'docker' will use the docker registry and tag (See client_images). | |
| options: | |
| - docker | |
| - git | |
| common_client_tag: | |
| type: string | |
| description: >- | |
| If provided, this tag will be used for all clients, overriding individual tags/branches in client_repos and client_images | |
| default: "bal-devnet-2" | |
| client_repos: | |
| type: string | |
| default: | | |
| { | |
| "geth": "ethereum/go-ethereum@master", | |
| "besu": "hyperledger/besu@main", | |
| "reth": "paradigmxyz/reth@main", | |
| "nethermind": "NethermindEth/nethermind@master", | |
| } | |
| description: 'JSON object containing client versions in format {"client": "repo@tag", ...}' | |
| client_images: | |
| type: string | |
| default: | | |
| { | |
| "geth": "docker.ethquokkaops.io/dh/ethpandaops/geth:master", | |
| "besu": "docker.ethquokkaops.io/dh/ethpandaops/besu:main", | |
| "reth": "docker.ethquokkaops.io/dh/ethpandaops/reth:main", | |
| "nethermind": "docker.ethquokkaops.io/dh/ethpandaops/nethermind:master", | |
| "erigon": "docker.ethquokkaops.io/dh/ethpandaops/erigon:main", | |
| "nimbusel": "docker.ethquokkaops.io/dh/ethpandaops/nimbus-eth1:master", | |
| "ethrex": "ghcr.io/lambdaclass/ethrex:main" | |
| } | |
| description: 'JSON object containing client docker images in format {"client": "registry:tag", ...}' | |
| env: | |
| # Proxy | |
| GOPROXY: "${{ vars.GOPROXY }}" | |
| # Hive action environment variables | |
| S3_BUCKET: hive-results | |
| S3_PATH: bal-quick | |
| S3_PUBLIC_URL: https://hive.ethpandaops.io/#/test/bal-quick/ | |
| INSTALL_RCLONE_VERSION: v1.68.2 | |
| # Flags used for all simulators | |
| GLOBAL_EXTRA_FLAGS: >- | |
| --client.checktimelimit=300s | |
| --docker.buildoutput | |
| # Docker-specific flags (only used when client_source is 'docker') | |
| DOCKER_AUTH_FLAGS: >- | |
| --docker.auth | |
| # Flags used for the ethereum/eels/consume-engine simulator | |
| EELS_ENGINE_FLAGS: >- | |
| --sim.parallelism=6 | |
| --sim.buildarg fixtures=${EELS_BUILD_ARG_FIXTURES} | |
| --sim.buildarg branch=${EELS_BUILD_ARG_BRANCH} | |
| --sim.limit='.*(8024|7708|7778|7843|7928).*' | |
| --sim.loglevel=3 | |
| # Flags used for the ethereum/eels/consume-rlp simulator | |
| EELS_RLP_FLAGS: >- | |
| --sim.parallelism=6 | |
| --sim.buildarg fixtures=${EELS_BUILD_ARG_FIXTURES} | |
| --sim.buildarg branch=${EELS_BUILD_ARG_BRANCH} | |
| --sim.limit='.*(8024|7708|7778|7843|7928).*' | |
| --sim.loglevel=3 | |
| jobs: | |
| prepare: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| hive_repo: ${{ steps.client_config.outputs.hive_repo }} | |
| hive_tag: ${{ steps.client_config.outputs.hive_tag }} | |
| client_config: ${{ steps.client_config.outputs.client_config }} | |
| client_source: ${{ inputs.client_source || 'git' }} | |
| fixtures_url: ${{ steps.latest.outputs.fixtures_url }} | |
| eels_branch: ${{ steps.latest.outputs.eels_branch }} | |
| steps: | |
| - name: Get latest bal fixtures and branch | |
| id: latest | |
| env: | |
| GH_TOKEN: ${{ github.token }} | |
| run: | | |
| # Get latest bal fixtures release from EEST | |
| TAG=$(gh release list --repo ethereum/execution-spec-tests --json tagName --limit 100 | jq -r '[.[] | select(.tagName | startswith("bal"))][0].tagName') | |
| FIXTURES_URL="https://github.com/ethereum/execution-spec-tests/releases/download/${TAG}/fixtures_bal.tar.gz" | |
| echo "fixtures_url=$FIXTURES_URL" >> "$GITHUB_OUTPUT" | |
| echo "Using fixtures from: $FIXTURES_URL" | |
| # Get latest devnets/bal/N branch from EELS (highest number) | |
| BRANCH=$(gh api repos/ethereum/execution-specs/branches --paginate -q '.[].name' | grep -E '^devnets/bal/[0-9]+$' | sort -t/ -k3 -n | tail -1) | |
| echo "eels_branch=$BRANCH" >> "$GITHUB_OUTPUT" | |
| echo "Using EELS branch: $BRANCH" | |
| - uses: ethpandaops/hive-github-action/helpers/client-config@09050fc75bae8a10b1876a0826ca4114ea9ed6e8 # v0.6.3 | |
| name: "Client config" | |
| id: client_config | |
| with: | |
| client_repos: ${{ inputs.client_repos }} | |
| client_images: ${{ inputs.client_images }} | |
| common_client_tag: ${{ inputs.common_client_tag || 'bal-devnet-2' }} | |
| client_source: ${{ inputs.client_source || 'git' }} | |
| hive_version: ${{ inputs.hive_version || 'ethereum/hive@master' }} | |
| goproxy: ${{ env.GOPROXY }} | |
| test: | |
| timeout-minutes: 2160 | |
| needs: prepare | |
| env: | |
| # BAL-specific environment variables | |
| HIVE_PARALLEL_TX_PROCESSING_DISABLED: "true" | |
| HIVE_AMSTERDAM_TIMESTAMP: "1759250952" | |
| # Dynamic EELS build args from prepare job | |
| EELS_BUILD_ARG_FIXTURES: ${{ needs.prepare.outputs.fixtures_url }} | |
| EELS_BUILD_ARG_BRANCH: ${{ needs.prepare.outputs.eels_branch }} | |
| runs-on: >- | |
| ${{ | |
| matrix.simulator == 'ethereum/rpc-compat' && 'ubuntu-latest' || | |
| contains(matrix.simulator, 'ethereum/eels/') && 'self-hosted-ghr-size-ccx33-x64' || | |
| 'ubuntu-latest' | |
| }} | |
| concurrency: | |
| group: >- | |
| ${{ github.head_ref || inputs }}-${{ matrix.client }}-${{ matrix.simulator }}-quick | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| client: >- | |
| ${{ fromJSON(format('[{0}]', inputs.client || ' | |
| "go-ethereum", | |
| "nethermind", | |
| "nimbus-el", | |
| "erigon", | |
| "besu", | |
| "reth" | |
| '))}} | |
| # TODO: add back "ethereum/eels/consume-rlp" when clients have bal-devnet-2 branch | |
| simulator: >- | |
| ${{ fromJSON(format('[{0}]', inputs.simulator || ' | |
| "ethereum/eels/consume-engine" | |
| '))}} | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| - uses: ethpandaops/hive-github-action/helpers/self-hosted-runner-dependencies@09050fc75bae8a10b1876a0826ca4114ea9ed6e8 # v0.6.3 | |
| if: runner.environment != 'github-hosted' | |
| - uses: ethpandaops/actions/docker-login@a91b7a8dd6a264f5e845ac2aa52d2d6f24e6d01d | |
| with: | |
| username: ethpandaops | |
| password: ${{ secrets.DOCKERHUB_TOKEN }} | |
| - uses: ethpandaops/hive-github-action@09050fc75bae8a10b1876a0826ca4114ea9ed6e8 # v0.6.3 | |
| with: | |
| hive_repository: ${{ needs.prepare.outputs.hive_repo }} | |
| hive_version: ${{ needs.prepare.outputs.hive_tag }} | |
| client: ${{ matrix.client }} | |
| simulator: ${{ matrix.simulator }} | |
| client_config: ${{ needs.prepare.outputs.client_config }} | |
| extra_flags: >- | |
| ${{ env.GLOBAL_EXTRA_FLAGS }} | |
| ${{ needs.prepare.outputs.client_source == 'docker' && env.DOCKER_AUTH_FLAGS || '' }} | |
| ${{ matrix.simulator == 'ethereum/eels/consume-engine' && env.EELS_ENGINE_FLAGS || '' }} | |
| ${{ matrix.simulator == 'ethereum/eels/consume-rlp' && env.EELS_RLP_FLAGS || '' }} | |
| s3_upload: true | |
| s3_bucket: ${{ env.S3_BUCKET }} | |
| s3_path: ${{ env.S3_PATH }} | |
| s3_public_url: ${{ env.S3_PUBLIC_URL }} | |
| rclone_config: ${{ secrets.HIVE_RCLONE_CONFIG }} | |
| rclone_version: ${{ env.INSTALL_RCLONE_VERSION }} | |
| workflow_artifact_upload: true | |
| website_upload: true |