Skip to content

Daily Reports

Daily Reports #132

name: Daily Reports
on:
schedule:
# Every day at UTC midnight
- cron: "0 0 * * 1,2,3,4,5"
workflow_dispatch:
env:
RUST_VERSION: 1.81.0
jobs:
run-hive:
name: Hive (${{ matrix.vm }}) - ${{ matrix.test.name }}
runs-on: ubuntu-latest
strategy:
matrix:
vm: [levm, revm]
test:
- {
name: "Rpc Compat tests",
file_name: rpc-compat,
simulation: ethereum/rpc-compat,
}
- { name: "Devp2p eth tests", file_name: devp2p, simulation: devp2p }
- {
name: "Cancun Engine tests",
file_name: engine,
simulation: ethereum/engine,
}
- { name: "Sync tests", file_name: sync, simulation: ethereum/sync }
steps:
- name: Pull image
if: ${{ matrix.vm == 'revm' }}
run: |
docker pull ghcr.io/lambdaclass/ethrex:latest
docker tag ghcr.io/lambdaclass/ethrex:latest ethrex:latest
- name: Checkout sources
uses: actions/checkout@v4
- name: Build Image with LEVM
if: ${{ matrix.vm == 'levm' }}
run: cd crates/vm/levm && make build-image-levm
- name: Setup Go
uses: actions/setup-go@v5
- name: Setup Hive
run: make setup-hive
- name: Run Hive Simulation
run: cd hive && ./hive --client ethrex --sim ${{ matrix.test.simulation }} --sim.parallelism 16
continue-on-error: true
- name: Upload results
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.test.file_name }}_${{ matrix.vm }}_logs
path: hive/workspace/logs/*-*.json
if-no-files-found: error
hive-report:
name: Generate report and upload to Slack (${{ matrix.vm }})
needs: run-hive
runs-on: ubuntu-latest
strategy:
matrix:
vm: [levm, revm]
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Rustup toolchain install
uses: dtolnay/rust-toolchain@stable
with:
toolchain: ${{ env.RUST_VERSION }}
- name: Download all results
uses: actions/download-artifact@v4
with:
path: hive/workspace/logs
pattern: "*_${{ matrix.vm }}_logs"
merge-multiple: true
- name: Caching
uses: Swatinem/rust-cache@v2
- name: Generate the hive report
run: cargo run -p hive_report > results.md
- name: Upload ${{matrix.vm}} result
uses: actions/upload-artifact@v4
with:
name: results_${{matrix.vm}}.md
path: results.md
if-no-files-found: error
- name: Post results in summary
run: |
echo "# Hive coverage report (${{ matrix.vm }})" >> $GITHUB_STEP_SUMMARY
cat results.md >> $GITHUB_STEP_SUMMARY
- name: Post results to Slack
env:
SLACK_WEBHOOKS: >
${{ github.event_name == 'workflow_dispatch'
&& secrets.TEST_CHANNEL_SLACK
|| format(
'{0} {1} {2}',
secrets.ETHREX_L1_SLACK_WEBHOOK,
secrets.ETHREX_L2_SLACK_WEBHOOK,
secrets.LEVM_SLACK_WEBHOOK
)
}}
SCRIPT: >
${{ matrix.vm == 'levm'
&& '.github/scripts/publish_levm_hive.sh'
|| '.github/scripts/publish_hive.sh'
}}
run: |
for webhook in $SLACK_WEBHOOKS; do
sh $SCRIPT "$webhook"
done
hive-diff-report:
name: Post tests diff to levm slack
needs: hive-report
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Download results (levm)
uses: actions/download-artifact@v4
with:
name: results_levm.md
- name: Rename result (1)
run: cp results.md results_levm.md
- name: Download results (revm)
uses: actions/download-artifact@v4
with:
name: results_revm.md
- name: Rename result (2)
run: cp results.md results_revm.md
- name: Post results diff to Slack
env:
SLACK_WEBHOOK: >
${{ github.event_name == 'workflow_dispatch'
&& secrets.TEST_CHANNEL_SLACK
|| secrets.LEVM_SLACK_WEBHOOK
}}
run: |
bash .github/scripts/levm_revm_diff.sh results_revm.md results_levm.md >> diff.md
cat diff.md >> $GITHUB_STEP_SUMMARY
sh .github/scripts/publish_vms_diff.sh $SLACK_WEBHOOK
levm-test:
name: Generate Report for LEVM EF Tests
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Rustup toolchain install
uses: dtolnay/rust-toolchain@stable
with:
toolchain: ${{ env.RUST_VERSION }}
- name: Caching
uses: Swatinem/rust-cache@v2
- name: Download EF Tests
run: |
cd crates/vm/levm
make download-evm-ef-tests
- name: Run tests
run: |
cd crates/vm/levm
make generate-evm-ef-tests-report
- name: Post results in summary
run: |
echo "# Daily LEVM EF Tests Run Report" >> $GITHUB_STEP_SUMMARY
cat cmd/ef_tests/levm/levm_ef_tests_summary_github.txt >> $GITHUB_STEP_SUMMARY
- name: Post results to Slack
env:
SLACK_WEBHOOK: >
${{ github.event_name == 'workflow_dispatch'
&& secrets.TEST_CHANNEL_SLACK
|| secrets.LEVM_SLACK_WEBHOOK
}}
run: sh .github/scripts/publish_levm_ef_tests.sh "$SLACK_WEBHOOK"
flamegraphs-page:
name: Post to Slack link to Flamegraphs Page
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Post message to slack
env:
SLACK_WEBHOOKS: >
${{ github.event_name == 'workflow_dispatch'
&& secrets.TEST_CHANNEL_SLACK
|| format(
'{0} {1} {2}',
secrets.ETHREX_L1_SLACK_WEBHOOK,
secrets.ETHREX_L2_SLACK_WEBHOOK,
secrets.LEVM_SLACK_WEBHOOK
)
}}
run: |
for webhook in $SLACK_WEBHOOKS; do
sh .github/scripts/publish_link_flamegraphs.sh "$webhook"
done