chore: add more unused precompile checks & new ci to avoid commited patches #358
Workflow file for this run
This file contains hidden or 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: Integration tests | |
on: | |
push: | |
branches: [ master ] | |
pull_request: | |
branches: [ master ] | |
workflow_dispatch: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
permissions: | |
contents: read | |
pages: write | |
id-token: write | |
env: | |
CARGO_TERM_COLOR: always | |
jobs: | |
witness-generator: | |
name: Generate EEST benchmark fixtures | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Install Rust toolchain | |
uses: dtolnay/rust-toolchain@nightly | |
with: | |
components: clippy, rustfmt | |
- name: Generate benchmark fixtures | |
run: RUST_LOG=info cargo run -p witness-generator-cli --release -- tests --include 1M- --include Prague --tag v5.1.0 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Check zkevm-fixtures-input folder has at least 1 file | |
run: | | |
echo "Files in zkevm-fixtures-input folder:" | |
ls -l ./zkevm-fixtures-input | |
if [ -z "$(ls -A ./zkevm-fixtures-input)" ]; then | |
echo "zkevm-fixtures-input folder is empty" | |
exit 1 | |
fi | |
stateless-validator: | |
name: "${{ format('{0} / {1} / {2}', matrix.el, matrix.zkvm, matrix.test) }}" | |
strategy: | |
fail-fast: false | |
matrix: | |
test: | |
- execute_empty_block | |
- execute_mainnet_blocks | |
- execute_invalid_block | |
- prove_empty_block | |
zkvm: [sp1, risc0, pico, zisk, openvm] | |
el: [reth, ethrex] | |
include: | |
- zkvm: openvm | |
threads: 2 | |
- threads: 12 | |
exclude: | |
# ZisK | |
- zkvm: zisk | |
test: prove_empty_block # ere image intentionally doesn't bake big proving key for CI | |
# Ethrex | |
- el: ethrex | |
zkvm: openvm # See https://github.com/eth-act/ere/issues/168 | |
- el: ethrex | |
zkvm: pico # See https://github.com/eth-act/ere/issues/174 | |
- el: ethrex | |
zkvm: zisk # See https://github.com/eth-act/ere/issues/186 | |
# Pico | |
- zkvm: pico | |
test: prove_empty_block # See https://github.com/eth-act/ere/issues/199 | |
uses: ./.github/workflows/run-benchmark.yml | |
with: | |
test: ${{ matrix.test }} | |
zkvm: ${{ matrix.zkvm }} | |
el: ${{ matrix.el }} | |
upload_results: ${{ startsWith(matrix.test, 'execute_') }} | |
threads: ${{ matrix.threads }} | |
custom-guest: | |
name: "${{ format('{0} / {1}', matrix.test, matrix.zkvm) }}" | |
strategy: | |
fail-fast: false | |
matrix: | |
test: | |
- execute_empty_program | |
- execute_panic_guest | |
- prove_empty_program | |
- prove_panic_guest | |
zkvm: [sp1, risc0, zisk, openvm, pico] | |
exclude: | |
# ZisK - ere image intentionally doesn't bake big proving key for CI | |
- test: prove_empty_program | |
zkvm: zisk | |
- test: prove_panic_guest | |
zkvm: zisk | |
uses: ./.github/workflows/run-benchmark.yml | |
with: | |
test: ${{ matrix.test }} | |
zkvm: ${{ matrix.zkvm }} | |
el: 'none' | |
threads: 12 | |
generate-benchmark-website: | |
name: Generate Benchmark Website | |
needs: [stateless-validator] | |
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' || github.event_name == 'workflow_dispatch' }} | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.10' | |
- name: Download all benchmark artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
pattern: benchmark-results-* | |
path: ./downloaded-artifacts | |
- name: Merge results and generate website | |
run: | | |
mkdir -p ./merged-results | |
echo "Downloaded artifacts:" | |
ls -la ./downloaded-artifacts/ || echo "No artifacts found" | |
# Extract all tar.gz files and merge them | |
for artifact_dir in ./downloaded-artifacts/*/; do | |
if [ -d "$artifact_dir" ]; then | |
echo "Processing $artifact_dir" | |
for tarfile in "$artifact_dir"/*.tar.gz; do | |
if [ -f "$tarfile" ]; then | |
echo "Extracting $tarfile" | |
tar -xzf "$tarfile" -C ./merged-results --skip-old-files 2>/dev/null | |
fi | |
done | |
fi | |
done | |
echo "Merged results structure:" | |
ls -la ./merged-results/ | |
if [ -d ./merged-results/zkevm-metrics ]; then | |
echo "Contents of zkevm-metrics:" | |
ls -la ./merged-results/zkevm-metrics/ | |
fi | |
echo "Generating website..." | |
python3 scripts/generate-website.py -i ./merged-results -o index.html | |
- name: Upload website artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: benchmark-website | |
path: index.html | |
retention-days: 90 | |
deploy-pages: | |
name: Deploy Benchmark Website | |
needs: generate-benchmark-website | |
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' || github.event_name == 'workflow_dispatch' }} | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
pages: write | |
id-token: write | |
environment: | |
name: github-pages | |
url: ${{ steps.deployment.outputs.page_url }} | |
steps: | |
- name: Configure GitHub Pages | |
uses: actions/configure-pages@v5 | |
- name: Download website artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: benchmark-website | |
path: ./website | |
- name: Upload Pages artifact | |
uses: actions/upload-pages-artifact@v3 | |
with: | |
path: ./website | |
- name: Deploy to GitHub Pages | |
id: deployment | |
uses: actions/deploy-pages@v4 |