Skip to content

feat: Ethereum prover #46

feat: Ethereum prover

feat: Ethereum prover #46

Workflow file for this run

name: ci-run
on:
pull_request:
push:
branches: [main]
permissions:
contents: read
concurrency:
group: check-${{ github.ref }}
cancel-in-progress: true
jobs:
general-checks:
name: general-checks 🧹
runs-on: matterlabs-ci-runner-high-performance
defaults:
run:
working-directory: ./proof_verifier_js/ts
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- name: Install Rust toolchain
uses: moonrepo/setup-rust@ede6de059f8046a5e236c94046823e2af11ca670 # v1.2.2
with:
inherit-toolchain: true
- uses: taiki-e/install-action@3522286d40783523f9c7880e33f785905b4c20d0 # v2.66.1
with:
tool: wasm-pack
- name: Setup Node.js
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
with:
node-version: '22'
- uses: mskelton/setup-yarn@8d0bc12bc7f72a9acfc32019da0381dfcb481df0 # v3.0.0
- name: Install deps
run: yarn install
- name: Build
run: yarn build
license-check:
name: license-check 📜
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./proof_verifier_js/ts
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- name: Setup Node.js
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
with:
node-version: '22'
- name: Install license-checker
run: npm install -g license-checker
- name: Run license checker
run: |
license-checker --production \
--onlyAllow "MIT;Apache-2.0" \
--summary
ethereum-prover-checks:
name: ethereum-prover checks 🧪
runs-on: matterlabs-ci-runner-high-performance
env:
ZKSYNC_USE_CUDA_STUBS: true
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- name: Setup runner
uses: ./.github/actions/runner-setup
- name: Rustfmt
run: cargo fmt -p ethereum_prover -- --check
# TODO: For some reason, it takes forever to run.
# - name: Clippy
# run: cargo clippy -p ethereum_prover --no-deps -- -D warnings
- name: Tests (nextest)
run: RUST_MIN_STACK=267108864 cargo nextest run -p ethereum_prover --release
# TODO: GPU prover fails to compile for some reason, to be fixed later.
# ####################################
# # Build prover integration tests #
# ####################################
# build-prover-tests:
# runs-on: matterlabs-ci-runner-ultra-performance
# container:
# image: nvidia/cuda:12.9.1-devel-ubuntu22.04
# steps:
# - name: Checkout code
# uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
# - name: Setup runner
# uses: ./.github/actions/runner-setup
# - name: Check CUDA version
# run: |
# nvcc --version
# - name: Checkout era-bellman-cuda
# uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
# with:
# repository: matter-labs/era-bellman-cuda
# ref: main
# path: bellman-cuda
# fetch-depth: '1'
# - name: Cache bellman-cuda
# id: bellman-cuda-cache
# uses: actions/cache@v4
# with:
# path: 'bellman-cuda/build'
# key: bellman-cuda-${{ hashFiles('bellman-cuda/**') }}
# - name: Build bellman-cuda
# shell: 'bash -ex {0}'
# if: steps.bellman-cuda-cache.outputs.cache-hit != 'true'
# run: |
# cmake -Bbellman-cuda/build -Sbellman-cuda/ -DCMAKE_BUILD_TYPE=Release
# cmake --build bellman-cuda/build/
# # Build and archive tests to execute on another machine.
# # Use `cargo nextest archive` to make sure that all dependencies are included properly.
# - name: Build and archive test
# env:
# # This is a special mandatory hack to transfer test binary from one machine to another.
# # We must use a dummy `./` path addition in the workspace path /home/runner/_work
# # to prevent GitHub Actions to replace it to the mapped `/__w` folder in the docker container.
# # This is required to make sure that the paths to workspace artifacts like zkos-l1-state.json
# # are correct inside prebuilt binary.
# # This variable overwrites the default relative `./` in the .cargo/config.toml.
# WORKSPACE_DIR: "/opt/./actions-runner/_work/zksync-os-server/zksync-os-server"
# BELLMAN_CUDA_DIR: ${{ github.workspace }}/bellman-cuda
# run: |
# RUST_MIN_STACK=267108864 cargo nextest archive --release -p ethereum_prover \
# --test integration --archive-file ${PROVER_GPU_TESTS}.tar.zst
# - name: Upload tests
# uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f3 # v6.0.0
# with:
# name: ${{ env.PROVER_GPU_TESTS }}
# path: ${{ env.PROVER_GPU_TESTS }}.tar.zst
# if-no-files-found: error
# retention-days: 1 # delete sooner to not waste storage
# #################################################
# # Run prover integration tests on GPU machine #
# #################################################
# ethereum-prover-gpu-tests:
# runs-on: [matterlabs-ci-gpu-runner, hetzner]
# needs: build-prover-tests
# steps:
# - name: Checkout code
# uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
# with:
# submodules: true
# - name: Setup runner
# uses: ./.github/actions/runner-setup
# - name: Check Nvidia driver version
# run: |
# echo $WORKSPACE
# pwd
# nvidia-smi
# - name: Download prebuilt tests
# uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
# with:
# name: ${{ env.PROVER_GPU_TESTS }}
# - name: Download CRS setup file
# if: steps.cache-crs.outputs.cache-hit != 'true'
# env:
# # Download CRS file from EU storage for GPU runner
# CRS_FILE_URL: https://storage.googleapis.com/matterlabs-setup-keys-europe/setup-keys/setup_compact.key
# run: wget -q --show-progress "${CRS_FILE_URL}"
# # --workspace-remap is mandatory (!)
# # Otherwise, the prebuilt binary will not be able to find its dependencies and fails to execute
# - name: Run prover tests on GPU
# env:
# COMPACT_CRS_FILE: ${{ github.workspace }}/setup_compact.key
# RUST_MIN_STACK: 267108864
# run: |
# ulimit -s 300000
# RUN_GPU_TESTS=1 cargo nextest run -p ethereum_prover --test integration
# Special job that allows some of the jobs to be skipped or failed
# requiring others to be successful
pr-checks:
runs-on: ubuntu-latest
if: always()
needs:
- general-checks
- ethereum-prover-checks
# TODO: fix GPU prover tests
# - ethereum-prover-gpu-tests
steps:
- name: Decide on PR checks
uses: re-actors/alls-green@05ac9388f0aebcb5727afa17fcccfecd6f8ec5fe # v1.2.2
with:
jobs: ${{ toJSON(needs) }}