Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# ---------------------------------------------------------------------------
# cb-testing Docker image overrides
# ---------------------------------------------------------------------------
# Copy this file to .env and customize for your local images.
# All values have defaults in generate_kurtosis_configs.py, so this file
# is entirely optional — only needed when using custom Docker images.
# ---------------------------------------------------------------------------

# Helix relay image (your custom relay build)
# Default: helix-relay:kurtosis
# HELIX_RELAY_IMAGE=helix-relay:kurtosis

# mev-boost relay image (used in multi-relay scenarios)
# Default: ethpandaops/mev-boost-relay:main
# MEV_RELAY_IMAGE=ethpandaops/mev-boost-relay:main

# Commit-Boost PBS image (sub latest for your local build)
# Default: commit-boost/commit-boost:latest
# MEV_BOOST_IMAGE=commit-boost/commit-boost:latest
72 changes: 17 additions & 55 deletions .github/workflows/integration.yml
Original file line number Diff line number Diff line change
@@ -1,20 +1,19 @@
name: Integration Test

on:
schedule:
# Runs every day at 00:00 UTC
- cron: '0 0 * * *'
workflow_dispatch:
inputs:
cb_ref:
description: 'Commit-Boost branch/commit to test'
required: false
default: 'main'
target_epoch:
description: 'Target epoch for verification'
required: false
default: '7'
default: '2'
min_epochs:
description: 'Observation window in epochs'
required: false
default: '2'
default: '1'

env:
ENCLAVE: cb-ci-${{ github.run_id }}
Expand All @@ -28,6 +27,8 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v6
with:
submodules: recursive

- name: Setup Rust
uses: dtolnay/rust-toolchain@master
Expand All @@ -45,63 +46,25 @@ jobs:
- name: Build cb-verify
run: just build-release

- name: Checkout Commit-Boost
uses: actions/checkout@v6
with:
repository: commit-boost/commit-boost-client
ref: ${{ github.event.inputs.cb_ref }}
path: commit-boost-client

- name: Build CB Docker image
working-directory: commit-boost-client
run: |
docker build \
-t commit-boost/pbs:kurtosis \
-f Dockerfile \
--build-arg BIN=pbs \
.

- name: Generate CI config
run: |
PLAYBOOK_URL="https://raw.githubusercontent.com/${{ github.repository }}/${{ github.ref_name }}/assertoor/cb-mev-pipeline.yaml"
sed "s|http://host.docker.internal:8888/assertoor/cb-mev-pipeline.yaml|${PLAYBOOK_URL}|" \
configs/assertoor-pbs.yml > configs/assertoor-ci.yml
echo "Playbook URL: $PLAYBOOK_URL"

- name: Install Kurtosis
shell: bash
run: |
echo "deb [trusted=yes] https://apt.fury.io/kurtosis-tech/ /" | \
echo "deb [trusted=yes] https://sdk.kurtosis.com/kurtosis-cli-release-artifacts/ /" | \
sudo tee /etc/apt/sources.list.d/kurtosis.list
sudo apt update
sudo apt install -y kurtosis-cli
kurtosis analytics disable
echo "$(dirname $(which kurtosis))" >> $GITHUB_PATH

- name: Launch devnet
- name: Launch devnet + verify
timeout-minutes: 60
run: |
kurtosis run github.com/ethpandaops/ethereum-package \
--enclave "$ENCLAVE" \
--args-file configs/assertoor-ci.yml \
--image-download always \
--non-blocking-tasks 2>&1 | tee kurtosis-run.log

- name: Verify
timeout-minutes: 30
run: |
cargo run --release -- \
--enclave "$ENCLAVE" \
--target-epoch "${{ github.event.inputs.target_epoch }}" \
./scripts/run-and-verify.sh \
--config configs/example-kurtosis-config.yml \
--json \
--live-metrics \
--min-epochs "${{ github.event.inputs.min_epochs }}" \
--timeout 3600 \
--json > verify-report.json 2>verify-err.log
echo "exit_code=$?" >> "$GITHUB_OUTPUT"

- name: Report
if: always()
run: |
echo "=== Verification Report ==="
if [ -f verify-report.json ]; then
python3 -m json.tool verify-report.json || cat verify-report.json
fi
--target-epoch "${{ github.event.inputs.target_epoch }}" \

- name: Upload artifacts
if: always()
Expand All @@ -110,7 +73,6 @@ jobs:
name: verify-${{ github.run_id }}
path: |
verify-report.json
verify-err.log
kurtosis-run.log

- name: Teardown
Expand Down
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,8 @@
*.swp
*.swo
.DS_Store
configs/generated
kurtosis-configs/
scripts/kurtosis-configs/
.env
*/__pycache__
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[submodule "ethereum-package"]
path = ethereum-package
url = https://github.com/JasonVranek/ethereum-package.git
20 changes: 20 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

15 changes: 15 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
[package]
name = "cb-testnet-verifier"
default-run = "cb-verify"
version = "0.1.0"
edition = "2024"
rust-version = "1.91"
Expand All @@ -10,6 +11,19 @@ license = "MIT"
name = "cb-verify"
path = "src/main.rs"

[[bin]]
name = "cb-orchestrator"
path = "src/orchestrator.rs"

[[bin]]
name = "test-mux"
path = "src/bin/test_mux.rs"

[[bin]]
name = "test-relay"
path = "src/bin/test_relay.rs"


[dependencies]
alloy-primitives = "^1.3.1"
alloy-rpc-types-beacon = "^1.0.35"
Expand All @@ -25,6 +39,7 @@ serde_json = "1"
tokio = { version = "1", features = ["full"] }
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
serde_yaml = "0.9.34"

[profile.release]
strip = true
Expand Down
Loading
Loading