Hive - Devnet 6 #3
This file contains 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 - Devnet 6 | |
on: | |
schedule: | |
- cron: '45 12 * * *' | |
workflow_dispatch: | |
# Note: We're limited to 10 inputs | |
inputs: | |
client: | |
type: string | |
default: '"reth","nethermind","ethereumjs","nimbus-el"' | |
description: Comma-separated list of clients to test .e.g go-ethereum, besu, reth, nethermind, erigon, ethereumjs | |
simulator: | |
type: string | |
default: '"ethereum/eest/consume-engine","ethereum/eest/consume-rlp"' | |
description: Comma-separated list of simulators to test .e.g ethereum/rpc-compat, ethereum/eest/consume-engine, ethereum/eest/consume-rlp | |
hive_version: | |
type: string | |
default: ethereum/hive@master | |
description: GitHub repository and tag for hive (repo@tag) | |
geth_version: | |
type: string | |
default: s1na/go-ethereum@prague-devnet-5 | |
description: GitHub repository and tag for go-ethereum (repo@tag) | |
besu_version: | |
type: string | |
default: hyperledger/besu@main | |
description: GitHub repository and tag for besu (repo@tag) | |
reth_version: | |
type: string | |
default: paradigmxyz/reth@main | |
description: GitHub repository and tag for reth (repo@tag) | |
nethermind_version: | |
type: string | |
default: NethermindEth/nethermind@master | |
description: GitHub repository and tag for nethermind (repo@tag) | |
erigon_version: | |
type: string | |
default: erigontech/erigon@main | |
description: GitHub repository and tag for erigon (repo@tag) | |
ethereumjs_version: | |
type: string | |
default: ethereumjs/ethereumjs-monorepo@update-7702-devnet-6 | |
description: GitHub repository and tag for ethereumjs (repo@tag) | |
nimbusel_version: | |
type: string | |
default: status-im/nimbus-eth1@master | |
description: GitHub repository and tag for nimbus-el (repo@tag) | |
env: | |
S3_BUCKET: hive-results | |
S3_PATH: pectra-devnet-6 | |
S3_PUBLIC_URL: https://hive.ethpandaops.io/pectra-devnet-6 | |
INSTALL_RCLONE_VERSION: v1.68.2 | |
EEST_BUILD_ARG_FIXTURES: https://hive-pectra-devnet-6-fixtures.fra1.cdn.digitaloceanspaces.com/fixtures_pectra-devnet-6.tar.gz | |
EEST_BUILD_ARG_BRANCH: main | |
# Flags used for all simulators | |
GLOBAL_EXTRA_FLAGS: >- | |
--client.checktimelimit=60s | |
--sim.parallelism=4 | |
--docker.buildoutput | |
# Flags used for the ethereum/eest/consume-engine simulator | |
EEST_ENGINE_FLAGS: >- | |
--sim.buildarg fixtures=${EEST_BUILD_ARG_FIXTURES} | |
--sim.buildarg branch=${EEST_BUILD_ARG_BRANCH} | |
--sim.limit "fork_CancunToPrague or fork_Prague" | |
--sim.loglevel=3 | |
# Flags used for the ethereum/eest/consume-rlp simulator | |
EEST_RLP_FLAGS: >- | |
--sim.buildarg fixtures=${EEST_BUILD_ARG_FIXTURES} | |
--sim.buildarg branch=${EEST_BUILD_ARG_BRANCH} | |
--sim.limit "fork_CancunToPrague or fork_Prague" | |
--sim.loglevel=3 | |
# Flags used for the ethereum/rpc-compat simulator | |
RPC_COMPAT_FLAGS: >- | |
--sim.loglevel=3 | |
jobs: | |
prepare: | |
runs-on: ubuntu-latest | |
outputs: | |
# Hive version | |
hive_repo: ${{ steps.parse.outputs.hive_repo }} | |
hive_tag: ${{ steps.parse.outputs.hive_tag }} | |
# Versions of the clients | |
geth_repo: ${{ steps.parse.outputs.geth_repo }} | |
geth_tag: ${{ steps.parse.outputs.geth_tag }} | |
geth_docker_image_tag: ${{ steps.parse.outputs.geth_docker_image_tag }} | |
besu_repo: ${{ steps.parse.outputs.besu_repo }} | |
besu_tag: ${{ steps.parse.outputs.besu_tag }} | |
besu_docker_image_tag: ${{ steps.parse.outputs.besu_docker_image_tag }} | |
reth_repo: ${{ steps.parse.outputs.reth_repo }} | |
reth_tag: ${{ steps.parse.outputs.reth_tag }} | |
reth_docker_image_tag: ${{ steps.parse.outputs.reth_docker_image_tag }} | |
nethermind_repo: ${{ steps.parse.outputs.nethermind_repo }} | |
nethermind_tag: ${{ steps.parse.outputs.nethermind_tag }} | |
nethermind_docker_image_tag: ${{ steps.parse.outputs.nethermind_docker_image_tag }} | |
erigon_image: ${{ steps.parse.outputs.erigon_image }} | |
erigon_tag: ${{ steps.parse.outputs.erigon_tag }} | |
erigon_docker_image_tag: ${{ steps.parse.outputs.erigon_docker_image_tag }} | |
ethereumjs_repo: ${{ steps.parse.outputs.ethereumjs_repo }} | |
ethereumjs_tag: ${{ steps.parse.outputs.ethereumjs_tag }} | |
ethereumjs_docker_image_tag: ${{ steps.parse.outputs.ethereumjs_docker_image_tag }} | |
nimbusel_repo: ${{ steps.parse.outputs.nimbusel_repo }} | |
nimbusel_tag: ${{ steps.parse.outputs.nimbusel_tag }} | |
nimbusel_docker_image_tag: ${{ steps.parse.outputs.nimbusel_docker_image_tag }} | |
# client_config contains the YAML client config for Hive | |
client_config: ${{ steps.client_config.outputs.config }} | |
steps: | |
- id: parse | |
run: | | |
# Default client versions | |
GETH_DEFAULT="s1na/go-ethereum@prague-devnet-5" | |
BESU_DEFAULT="hyperledger/besu@main" | |
RETH_DEFAULT="paradigmxyz/reth@main" | |
NETHERMIND_DEFAULT="NethermindEth/nethermind@master" | |
ERIGON_DEFAULT="erigontech/erigon@main" | |
ETHEREUMJS_DEFAULT="ethereumjs/ethereumjs-monorepo@master" | |
NIMBUSEL_DEFAULT="status-im/nimbus-eth1@master" | |
# Parse geth | |
echo "geth_repo=$(echo ${GETH_VERSION:-$GETH_DEFAULT} | cut -d@ -f1)" >> $GITHUB_OUTPUT | |
echo "geth_tag=$(echo ${GETH_VERSION:-$GETH_DEFAULT} | cut -d@ -f2)" >> $GITHUB_OUTPUT | |
echo "geth_docker_image_tag=$(echo ${GETH_VERSION:-$GETH_DEFAULT} | sed 's/[@\/]/_/g' | tr '[:upper:]' '[:lower:]')" >> $GITHUB_OUTPUT | |
# Parse besu | |
echo "besu_repo=$(echo ${BESU_VERSION:-$BESU_DEFAULT} | cut -d@ -f1)" >> $GITHUB_OUTPUT | |
echo "besu_tag=$(echo ${BESU_VERSION:-$BESU_DEFAULT} | cut -d@ -f2)" >> $GITHUB_OUTPUT | |
echo "besu_docker_image_tag=$(echo ${BESU_VERSION:-$BESU_DEFAULT} | sed 's/[@\/]/_/g' | tr '[:upper:]' '[:lower:]')" >> $GITHUB_OUTPUT | |
# Parse reth | |
echo "reth_repo=$(echo ${RETH_VERSION:-$RETH_DEFAULT} | cut -d@ -f1)" >> $GITHUB_OUTPUT | |
echo "reth_tag=$(echo ${RETH_VERSION:-$RETH_DEFAULT} | cut -d@ -f2)" >> $GITHUB_OUTPUT | |
echo "reth_docker_image_tag=$(echo ${RETH_VERSION:-$RETH_DEFAULT} | sed 's/[@\/]/_/g' | tr '[:upper:]' '[:lower:]')" >> $GITHUB_OUTPUT | |
# Parse nethermind | |
echo "nethermind_repo=$(echo ${NETHERMIND_VERSION:-$NETHERMIND_DEFAULT} | cut -d@ -f1)" >> $GITHUB_OUTPUT | |
echo "nethermind_tag=$(echo ${NETHERMIND_VERSION:-$NETHERMIND_DEFAULT} | cut -d@ -f2)" >> $GITHUB_OUTPUT | |
echo "nethermind_docker_image_tag=$(echo ${NETHERMIND_VERSION:-$NETHERMIND_DEFAULT} | sed 's/[@\/]/_/g' | tr '[:upper:]' '[:lower:]')" >> $GITHUB_OUTPUT | |
# Parse erigon | |
echo "erigon_repo=$(echo ${ERIGON_VERSION:-$ERIGON_DEFAULT} | cut -d@ -f1)" >> $GITHUB_OUTPUT | |
echo "erigon_tag=$(echo ${ERIGON_VERSION:-$ERIGON_DEFAULT} | cut -d@ -f2)" >> $GITHUB_OUTPUT | |
echo "erigon_docker_image_tag=$(echo ${ERIGON_VERSION:-$ERIGON_DEFAULT} | sed 's/[@\/]/_/g' | tr '[:upper:]' '[:lower:]')" >> $GITHUB_OUTPUT | |
# Parse ethereumjs | |
echo "ethereumjs_repo=$(echo ${ETHEREUMJS_VERSION:-$ETHEREUMJS_DEFAULT} | cut -d@ -f1)" >> $GITHUB_OUTPUT | |
echo "ethereumjs_tag=$(echo ${ETHEREUMJS_VERSION:-$ETHEREUMJS_DEFAULT} | cut -d@ -f2)" >> $GITHUB_OUTPUT | |
echo "ethereumjs_docker_image_tag=$(echo ${ETHEREUMJS_VERSION:-$ETHEREUMJS_DEFAULT} | sed 's/[@\/]/_/g' | tr '[:upper:]' '[:lower:]')" >> $GITHUB_OUTPUT | |
# Parse nimbusel | |
echo "nimbusel_repo=$(echo ${NIMBUSEL_VERSION:-$NIMBUSEL_DEFAULT} | cut -d@ -f1)" >> $GITHUB_OUTPUT | |
echo "nimbusel_tag=$(echo ${NIMBUSEL_VERSION:-$NIMBUSEL_DEFAULT} | cut -d@ -f2)" >> $GITHUB_OUTPUT | |
echo "nimbusel_docker_image_tag=$(echo ${NIMBUSEL_VERSION:-$NIMBUSEL_DEFAULT} | sed 's/[@\/]/_/g' | tr '[:upper:]' '[:lower:]')" >> $GITHUB_OUTPUT | |
# Parse hive | |
echo "hive_repo=$(echo ${HIVE_VERSION:-$HIVE_DEFAULT} | cut -d@ -f1)" >> $GITHUB_OUTPUT | |
echo "hive_tag=$(echo ${HIVE_VERSION:-$HIVE_DEFAULT} | cut -d@ -f2)" >> $GITHUB_OUTPUT | |
env: | |
GETH_VERSION: ${{ inputs.geth_version }} | |
BESU_VERSION: ${{ inputs.besu_version }} | |
RETH_VERSION: ${{ inputs.reth_version }} | |
NETHERMIND_VERSION: ${{ inputs.nethermind_version }} | |
ERIGON_VERSION: ${{ inputs.erigon_version }} | |
ETHEREUMJS_VERSION: ${{ inputs.ethereumjs_version }} | |
NIMBUSEL_VERSION: ${{ inputs.nimbusel_version }} | |
- id: client_config | |
run: | | |
cat << 'EOF' >> $GITHUB_OUTPUT | |
config<<ENDCONFIG | |
- client: go-ethereum | |
nametag: ${{ steps.parse.outputs.geth_docker_image_tag }} | |
dockerfile: git | |
build_args: | |
github: ${{ steps.parse.outputs.geth_repo }} | |
tag: ${{ steps.parse.outputs.geth_tag }} | |
- client: besu | |
nametag: ${{ steps.parse.outputs.besu_docker_image_tag }} | |
dockerfile: git | |
build_args: | |
github: ${{ steps.parse.outputs.besu_repo }} | |
tag: ${{ steps.parse.outputs.besu_tag }} | |
- client: reth | |
nametag: ${{ steps.parse.outputs.reth_docker_image_tag }} | |
dockerfile: git | |
build_args: | |
github: ${{ steps.parse.outputs.reth_repo }} | |
tag: ${{ steps.parse.outputs.reth_tag }} | |
- client: nethermind | |
nametag: ${{ steps.parse.outputs.nethermind_docker_image_tag }} | |
dockerfile: git | |
build_args: | |
github: ${{ steps.parse.outputs.nethermind_repo }} | |
tag: ${{ steps.parse.outputs.nethermind_tag }} | |
- client: erigon | |
nametag: ${{ steps.parse.outputs.erigon_docker_image_tag }} | |
dockerfile: git | |
build_args: | |
github: ${{ steps.parse.outputs.erigon_repo }} | |
tag: ${{ steps.parse.outputs.erigon_tag }} | |
- client: ethereumjs | |
nametag: ${{ steps.parse.outputs.ethereumjs_docker_image_tag }} | |
dockerfile: git | |
build_args: | |
github: ${{ steps.parse.outputs.ethereumjs_repo }} | |
tag: ${{ steps.parse.outputs.ethereumjs_tag }} | |
- client: nimbus-el | |
nametag: ${{ steps.parse.outputs.nimbusel_docker_image_tag }} | |
# dockerfile: git | |
build_args: | |
github: ${{ steps.parse.outputs.nimbusel_repo }} | |
tag: ${{ steps.parse.outputs.nimbusel_tag }} | |
ENDCONFIG | |
EOF | |
test: | |
timeout-minutes: 540 # 9 hours | |
needs: prepare | |
runs-on: >- | |
${{ | |
matrix.simulator == 'ethereum/rpc-compat' && 'ubuntu-latest' || | |
contains(matrix.simulator, 'ethereum/eest/') && 'self-hosted-ghr-size-m-x64' || | |
'ubuntu-latest' | |
}} | |
concurrency: | |
group: >- | |
${{ github.head_ref || inputs }}-${{ matrix.client }}-${{ matrix.simulator }} | |
strategy: | |
fail-fast: false | |
matrix: | |
client: ${{ fromJSON(format('[{0}]', inputs.client || '"reth","nethermind","ethereumjs","nimbusel"')) }} | |
simulator: ${{ fromJSON(format('[{0}]', inputs.simulator || '"ethereum/eest/consume-engine","ethereum/eest/consume-rlp"')) }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ./.github/actions/hive-deps | |
if: runner.environment != 'github-hosted' | |
- uses: ethpandaops/hive-github-action@master | |
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 }} | |
${{ matrix.simulator == 'ethereum/rpc-compat' && env.RPC_COMPAT_FLAGS || '' }} | |
${{ matrix.simulator == 'ethereum/eest/consume-engine' && env.EEST_ENGINE_FLAGS || '' }} | |
${{ matrix.simulator == 'ethereum/eest/consume-rlp' && env.EEST_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 |