Arbitrator CI triggered from @Ferret-san of #11
This file contains 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: Arbitrator CI | |
run-name: Arbitrator CI triggered from @${{ github.actor }} of ${{ github.head_ref }} | |
on: | |
workflow_dispatch: | |
merge_group: | |
pull_request: | |
paths: | |
- 'arbitrator/**' | |
- 'contracts' | |
- '.github/workflows/arbitrator-ci.yml' | |
- 'Makefile' | |
push: | |
branches: | |
- master | |
env: | |
RUST_BACKTRACE: 1 | |
RUSTFLAGS: -Dwarnings | |
WABT_VERSION: 1.0.32 | |
jobs: | |
arbitrator: | |
name: Run Arbitrator tests | |
runs-on: ubuntu-8 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Install Ubuntu dependencies | |
run: | | |
sudo apt-get update && sudo apt-get install -y \ | |
build-essential cmake lld-14 libudev-dev | |
sudo ln -s /usr/bin/wasm-ld-14 /usr/local/bin/wasm-ld | |
- name: Install go | |
uses: actions/setup-go@v4 | |
with: | |
go-version: 1.20.x | |
- name: Install custom go-ethereum | |
run: | | |
cd /tmp | |
git clone --branch v1.13.8 --depth 1 https://github.com/ethereum/go-ethereum.git | |
cd go-ethereum | |
# Enable KZG point evaluation precompile early | |
sed -i 's#var PrecompiledContractsBerlin = map\[common.Address\]PrecompiledContract{#\0 common.BytesToAddress([]byte{0x0a}): \&kzgPointEvaluation{},#g' core/vm/contracts.go | |
go build -o /usr/local/bin/geth ./cmd/geth | |
- name: Setup nodejs | |
uses: actions/setup-node@v3 | |
with: | |
node-version: '16' | |
cache: 'yarn' | |
cache-dependency-path: '**/yarn.lock' | |
- name: Install rust stable | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
components: 'llvm-tools-preview, rustfmt, clippy' | |
targets: 'wasm32-wasi, wasm32-unknown-unknown' | |
- name: Cache Rust intermediate build products | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/.cargo/bin/ | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
arbitrator/target/ | |
arbitrator/wasm-libraries/target/ | |
key: ${{ runner.os }}-cargo-${{ steps.install-rust.outputs.rustc_hash }}-full-${{ hashFiles('arbitrator/Cargo.lock') }} | |
restore-keys: | | |
${{ runner.os }}-cargo-${{ steps.install-rust.outputs.rustc_hash }}-full- | |
${{ runner.os }}-cargo-${{ steps.install-rust.outputs.rustc_hash }}- | |
- name: Cache wabt build | |
id: cache-wabt | |
uses: actions/cache@v3 | |
with: | |
path: ~/wabt-prefix | |
key: ${{ runner.os }}-wabt-${{ env.WABT_VERSION }} | |
- name: Install latest wabt | |
if: steps.cache-wabt.outputs.cache-hit != 'true' | |
run: | | |
cd "$(mktemp -d)" | |
git clone --recursive -b "$WABT_VERSION" https://github.com/WebAssembly/wabt . | |
mkdir build | |
cd build | |
mkdir -p ~/wabt-prefix | |
cmake .. -DCMAKE_INSTALL_PREFIX="$HOME/wabt-prefix" | |
make -j | |
make install | |
- name: Install Foundry | |
uses: foundry-rs/foundry-toolchain@v1 | |
- name: Cache cbrotli | |
uses: actions/cache@v3 | |
id: cache-cbrotli | |
with: | |
path: | | |
target/include/brotli/ | |
target/lib-wasm/ | |
target/lib/libbrotlicommon-static.a | |
target/lib/libbrotlienc-static.a | |
target/lib/libbrotlidec-static.a | |
key: ${{ runner.os }}-brotli-3-${{ hashFiles('scripts/build-brotli.sh') }}-${{ hashFiles('.github/workflows/arbitrator-ci.yaml') }} | |
restore-keys: ${{ runner.os }}-brotli-2- | |
- name: Build cbrotli-local | |
if: steps.cache-cbrotli.outputs.cache-hit != 'true' | |
run: ./scripts/build-brotli.sh -l | |
- name: Setup emsdk | |
if: steps.cache-cbrotli.outputs.cache-hit != 'true' | |
uses: mymindstorm/setup-emsdk@v12 | |
with: | |
# Make sure to set a version number! | |
version: 3.1.6 | |
# This is the name of the cache folder. | |
# The cache folder will be placed in the build directory, | |
# so make sure it doesn't conflict with anything! | |
actions-cache-folder: 'emsdk-cache' | |
no-cache: true | |
- name: Build cbrotli-wasm | |
if: steps.cache-cbrotli.outputs.cache-hit != 'true' | |
run: ./scripts/build-brotli.sh -w | |
- name: Add wabt to path | |
run: echo "$HOME/wabt-prefix/bin" >> "$GITHUB_PATH" | |
- name: Make arbitrator libraries | |
run: make -j wasm-ci-build | |
- name: Clippy check | |
run: cargo clippy --all --manifest-path arbitrator/Cargo.toml -- -D warnings | |
- name: Run rust tests | |
run: cargo test --all --manifest-path arbitrator/Cargo.toml | |
- name: Rustfmt | |
run: cargo fmt --all --manifest-path arbitrator/Cargo.toml -- --check | |
- name: Make proofs from test cases | |
run: make -j test-gen-proofs | |
- name: Start geth server | |
run: | | |
geth --dev --http --http.port 8545 & | |
sleep 2 | |
- name: Run proof validation tests | |
run: | | |
npm install --global yarn | |
cd contracts | |
yarn install | |
yarn build | |
yarn build:forge:yul | |
yarn hardhat --network localhost test test/prover/*.ts |