Skip to content

Hive - BAL Devnet 2 Quick #2

Hive - BAL Devnet 2 Quick

Hive - BAL Devnet 2 Quick #2

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
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
EELS_BUILD_ARG_FIXTURES: https://github.com/ethereum/execution-spec-tests/releases/download/bal%40v4.0.0/fixtures_bal.tar.gz
EELS_BUILD_ARG_BRANCH: forks/amsterdam
# 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 }}
steps:
- uses: ethpandaops/hive-github-action/helpers/client-config@1aa8d73dad34de13afbb3113ab16c1a462d2fbc3 # v0.5.0
name: "Client config"
id: client_config
with:
client_repos: ${{ inputs.client_repos }}
client_images: ${{ inputs.client_images }}
common_client_tag: ${{ inputs.common_client_tag }}
client_source: ${{ inputs.client_source }}
hive_version: ${{ inputs.hive_version }}
goproxy: ${{ env.GOPROXY }}
test:
timeout-minutes: 2160
needs: prepare
env:
# BAL-specific environment variables
HIVE_PARALLEL_TX_PROCESSING_DISABLED: "true"
HIVE_AMSTERDAM_TIMESTAMP: "1759250952"
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"
'))}}
# 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@1aa8d73dad34de13afbb3113ab16c1a462d2fbc3 # v0.5.0
if: runner.environment != 'github-hosted'
- uses: ethpandaops/actions/docker-login@a91b7a8dd6a264f5e845ac2aa52d2d6f24e6d01d
with:
username: ethpandaops
password: ${{ secrets.DOCKERHUB_TOKEN }}
- uses: ethpandaops/hive-github-action@1aa8d73dad34de13afbb3113ab16c1a462d2fbc3 # v0.5.0
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