Skip to content

nightly-tests

nightly-tests #39

Workflow file for this run

# CI tests the latest fork (heze) on every push. This nightly workflow
# covers all prior forks to catch regressions introduced by fork-specific changes.
name: nightly-tests
on:
schedule:
# Run at 8:30 AM UTC every day
- cron: '30 8 * * *'
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
RUSTFLAGS: "-D warnings -C debuginfo=0"
CARGO_INCREMENTAL: 0
jobs:
setup-matrix:
name: setup-matrix
runs-on: ubuntu-latest
outputs:
forks: ${{ steps.set-matrix.outputs.forks }}
steps:
- name: Set matrix
id: set-matrix
run: |
# All forks except heze (which is tested on every push via ci.yml).
echo 'forks=["phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu", "gloas"]' >> $GITHUB_OUTPUT
beacon-chain-tests:
name: beacon-chain-tests (${{ matrix.fork }})
needs: setup-matrix
runs-on: ubuntu-latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
strategy:
matrix:
fork: ${{ fromJson(needs.setup-matrix.outputs.forks) }}
fail-fast: false
steps:
- uses: actions/checkout@v5
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- uses: taiki-e/install-action@v2
with:
tool: cargo-nextest@0.9.132
- name: Run beacon_chain tests for ${{ matrix.fork }}
# Gloas/Heze-specific integration tests are tested on every push via
# ci.yml with FORK_NAME=heze. Exclude them from all nightly prior-fork
# runs to avoid timeout. Also exclude block_verification:: tests which
# build a 320-block chain via get_chain_segment() — under fulu with
# PeerDAS data columns, each test takes 20+ minutes causing job timeouts.
run: >
env FORK_NAME=${{ matrix.fork }} cargo nextest run --release
--features "fork_from_env,slasher/lmdb"
-p beacon_chain
-E 'not test(/gloas::|gloas_verification::|heze::|heze_verification::|block_verification::/)'
timeout-minutes: 90
op-pool-tests:
name: op-pool-tests (${{ matrix.fork }})
needs: setup-matrix
runs-on: ubuntu-latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
strategy:
matrix:
fork: ${{ fromJson(needs.setup-matrix.outputs.forks) }}
fail-fast: false
steps:
- uses: actions/checkout@v5
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- uses: taiki-e/install-action@v2
with:
tool: cargo-nextest@0.9.132
- name: Run operation_pool tests for ${{ matrix.fork }}
run: make test-op-pool-${{ matrix.fork }}
timeout-minutes: 60
network-tests:
name: network-tests (${{ matrix.fork }})
needs: setup-matrix
runs-on: ubuntu-latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
strategy:
matrix:
fork: ${{ fromJson(needs.setup-matrix.outputs.forks) }}
fail-fast: false
steps:
- uses: actions/checkout@v5
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- uses: taiki-e/install-action@v2
with:
tool: cargo-nextest@0.9.132
- name: Run network tests for ${{ matrix.fork }}
run: make test-network-${{ matrix.fork }}
timeout-minutes: 60
http-api-tests:
name: http-api-tests (${{ matrix.fork }})
runs-on: ubuntu-latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
strategy:
matrix:
# CI tests heze on every push. Cover the other recent forks here.
fork: ["electra", "fulu", "gloas"]
fail-fast: false
steps:
- uses: actions/checkout@v5
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- uses: taiki-e/install-action@v2
with:
tool: cargo-nextest@0.9.132
- name: Run http_api tests for ${{ matrix.fork }}
run: make test-http-api-${{ matrix.fork }}
timeout-minutes: 60
slasher-tests:
name: slasher-tests
runs-on: ubuntu-latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v5
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- uses: taiki-e/install-action@v2
with:
tool: cargo-nextest@0.9.132
- name: Run slasher tests (all backends)
run: make test-slasher
timeout-minutes: 30
state-transition-vectors:
name: state-transition-vectors
runs-on: ubuntu-latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v5
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- uses: taiki-e/install-action@v2
with:
tool: cargo-nextest@0.9.132
- name: Run state transition vector tests
run: cargo nextest run --release -p state_transition_vectors
timeout-minutes: 30