Skip to content

Bgraham/fix gh workflow #1

Bgraham/fix gh workflow

Bgraham/fix gh workflow #1

Workflow file for this run

name: CI
on:
workflow_dispatch:
pull_request:
paths:
- 'arbitrator/**'
- 'contracts/src/osp/**'
- 'contracts/src/mock/**'
- 'contracts/test/**'
- 'contracts/hardhat.config.ts'
- '.github/workflows/arbitrator-ci.yml'
- 'Makefile'
push:
branches:
- master
env:
RUST_BACKTRACE: 1
RUSTFLAGS: -Dwarnings
WABT_VERSION: 1.0.24
jobs:
coverage:
name: Run Arbitrator tests
runs-on: ubuntu-8
steps:
- name: Checkout
uses: actions/checkout@v1
with:
submodules: recursive
- name: Install Ubuntu dependencies
run: |
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo add-apt-repository -y ppa:longsleep/golang-backports
sudo apt-get update && sudo apt-get install -y \
build-essential cmake nodejs ethereum lld-10 golang-go libudev-dev
sudo ln -s /usr/bin/wasm-ld-10 /usr/local/bin/wasm-ld
- name: Install rust stable
uses: actions-rs/toolchain@v1
id: install-rust
with:
profile: minimal
toolchain: stable
override: true
components: 'llvm-tools-preview, rustfmt, clippy'
- name: Install grcov
uses: actions-rs/[email protected]
with:
crate: grcov
version: latest
use-tool-cache: true
- name: Install rust wasm targets
run: rustup target add 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: 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-2-${{ hashFiles('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: ./build-brotli.sh -l
- name: Setup emsdk
if: steps.cache-cbrotli.outputs.cache-hit != 'true'
uses: mymindstorm/setup-emsdk@v11
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: ./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: Enable rust instrumentation
run: |
echo LLVM_PROFILE_FILE="your_name-%p-%m.profraw" >> $GITHUB_ENV
echo "CARGO_INCREMENTAL=0" >> $GITHUB_ENV
echo RUSTFLAGS="-Cinstrument-coverage" >> $GITHUB_ENV
echo RUSTDOCFLAGS="-Cpanic=abort" >> $GITHUB_ENV
- name: Clippy check
uses: actions-rs/cargo@v1
with:
command: clippy
args: --all --manifest-path arbitrator/Cargo.toml -- -D warnings
- name: Run rust tests
uses: actions-rs/cargo@v1
with:
command: test
args: --all --manifest-path arbitrator/Cargo.toml
- name: Rustfmt
uses: actions-rs/cargo@v1
with:
command: fmt
args: --all --manifest-path arbitrator/Cargo.toml -- --check
- name: Make proofs from test cases
run: make -j test-gen-proofs
- name: Create code-coverage files
run: |
grcov . --binary-path arbitrator/target/release/ -s . -t lcov --branch --ignore-not-existing --ignore "/*" -o lcov.info
- name: Upload to codecov.io
uses: codecov/codecov-action@v1
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./lcov.info
fail_ci_if_error: true
verbose: false
- 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 hardhat --network localhost test test/prover/*.ts