Skip to content

Daily Reports

Daily Reports #103

Workflow file for this run

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:
build-images:
runs-on: ubuntu-latest
strategy:
matrix:
features: ["default", "levm"]
steps:
- uses: actions/checkout@v4
- name: Build ethrex image with features ${{ matrix.features }}
run: docker build -t ethrex:${{ matrix.features }} --build-arg BUILD_FLAGS="--features ${{ matrix.features }}" .
- name: Save image
run: docker save ethrex:${{ matrix.features }} > ${{ matrix.features }}-image.tar
- uses: actions/upload-artifact@v4
with:
name: ethrex-image-${{ matrix.features }}
path: "${{ matrix.features }}-image.tar"
run-hive:
name: Hive - (${{ matrix.image }} feature set)
needs: build-images
runs-on: ubuntu-latest
strategy:
matrix:
image: ["default", "levm"]
steps:
- uses: actions/download-artifact@v4
with:
name: ethrex-image-${{ matrix.image }}
path: images
- name: Debug images folder
run: echo $(ls images)
- name: Load image for ethrex build (${{ matrix.image }} feature set)
run: |
docker load < images/${{matrix.image}}-image.tar
docker tag ethrex:${{ matrix.image }} ethrex
- name: Checkout sources
uses: actions/checkout@v4
- name: Setup Go
uses: actions/setup-go@v5
- name: Setup Hive
run: make setup-hive
- name: Run Hive RPC Simulation
run: cd hive && ./hive --sim ethereum/rpc-compat --client ethrex --sim.limit "*" --sim.parallelism 16
continue-on-error: true
- name: Run Hive Sync Simulation
run: cd hive && ./hive --sim ethereum/sync --client ethrex --sim.limit "*" --sim.parallelism 16
continue-on-error: true
- name: Run Hive Engine Simulation
run: cd hive && ./hive --sim ethereum/engine --client ethrex --sim.limit "*" --sim.parallelism 16
continue-on-error: true
- name: Run Hive P2P Simulation
run: cd hive && ./hive --sim devp2p --client ethrex --sim.limit "*" --sim.parallelism 16
continue-on-error: true
- name: Upload results
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.image}}_logs
path: hive/workspace/logs/*-*.json
if-no-files-found: error
hive-generate-report:
name: Generate report and upload to summary and slack
needs: run-hive
runs-on: ubuntu-latest
strategy:
matrix:
image: ["default", "levm"]
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.image }}_logs"
merge-multiple: true
- name: Caching
uses: Swatinem/rust-cache@v2
- name: Generate the hive report
run: cargo run -p hive_report > results_${{matrix.image}}.md
- name: Upload result artifact (${{matrix.image}})
uses: actions/upload-artifact@v4
with:
name: results_${{matrix.image}}.md
path: results_${{matrix.image}}.md
if-no-files-found: error
hive-report-default-features:
name: Post hive reports
runs-on: ubuntu-latest
needs: hive-generate-report
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Fetch results markdown
uses: actions/download-artifact@v4
with:
name: "results_default.md"
- name: Post results in summary
run: |
echo "# Hive coverage report (default features build)" >> $GITHUB_STEP_SUMMARY
cat results_default.md >> $GITHUB_STEP_SUMMARY
# Note: Leave this commented, as it is for testing purposes.
- name: Post results to test channel for debugging
env:
url: ${{ secrets.TEST_CHANNEL_SLACK }}
run: sh .github/scripts/publish.sh
# - name: Post results to ethrex L1 slack channel
# env:
# url: ${{ secrets.ETHREX_L1_SLACK_WEBHOOK }}
# run: sh .github/scripts/publish.sh
# - name: Post results to ethrex L2 slack channel
# env:
# url: ${{ secrets.ETHREX_L2_SLACK_WEBHOOK }}
# run: sh .github/scripts/publish.sh
# - name: Post results to levm slack channel
# env:
# url: ${{ secrets.LEVM_SLACK_WEBHOOK }}
# run: sh .github/scripts/publish.sh
hive-report-levm:
name: Post hive reports
runs-on: ubuntu-latest
needs: hive-generate-report
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Fetch results markdown
uses: actions/download-artifact@v4
with:
name: "results_levm.md"
- name: Fetch results markdown
uses: actions/download-artifact@v4
with:
name: "results_default.md"
- name: Post results in summary
env:
url: ${{ secrets.TEST_CHANNEL_SLACK }}
run: |
sh .github/scripts/levm_default_diff.sh results_default.md results_levm.md >> diff.md
cat diff.md >> $GITHUB_STEP_SUMMARY
sh .github/scripts/publish_default_levm_diff.sh results_default.md results_levm.md >> diff.md
# - name: Post results to levm slack channel
# env:
# url: ${{ secrets.LEVM_SLACK_WEBHOOK }}
# run: sh .github/scripts/publish.sh
loc:
name: Count ethrex loc and generate report
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: Add Rust Cache
uses: Swatinem/rust-cache@v2
- name: Restore cache
id: cache-loc-report
uses: actions/cache@v4
with:
path: loc_report.json
key: loc-report-${{ github.ref_name }}
restore-keys: |
loc-report-
- name: Rename cached loc_report.json to loc_report.json.old
if: steps.cache-loc-report.outputs.cache-hit != ''
run: mv loc_report.json loc_report.json.old
- name: Generate the loc report
run: |
make loc
- name: Save new loc_report.json to cache
if: success()
uses: actions/cache@v4
with:
path: loc_report.json
key: loc-report-${{ github.ref_name }}
- name: Post results in summary
run: |
echo "# 'ethrex' lines of code report" >> $GITHUB_STEP_SUMMARY
cat loc_report_github.txt >> $GITHUB_STEP_SUMMARY
# - name: Post results to ethrex L1 slack channel
# env:
# url: ${{ secrets.ETHREX_L1_SLACK_WEBHOOK }}
# run: sh .github/scripts/publish_loc.sh
# - name: Post results to ethrex L2 slack channel
# env:
# url: ${{ secrets.ETHREX_L2_SLACK_WEBHOOK }}
# run: sh .github/scripts/publish_loc.sh
# - name: Post results to levm slack channel
# env:
# url: ${{ secrets.LEVM_SLACK_WEBHOOK }}
# run: sh .github/scripts/publish_loc.sh
# This is left commented out to ease debugging later on.
# Comment out all the other "Post to * slack channel" directives
- name: Post results to test slack channel
env:
url: ${{ secrets.TEST_CHANNEL_SLACK }}
run: sh .github/scripts/publish_loc.sh
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 ethrex L2 slack channel
# env:
# url: ${{ secrets.ETHREX_L2_SLACK_WEBHOOK }}
# run: sh .github/scripts/publish_levm_ef_tests_summary.sh
# - name: Post results to levm slack channel
# env:
# url: ${{ secrets.LEVM_SLACK_WEBHOOK }}
# run: sh .github/scripts/publish_levm_ef_tests_summary.sh