feat(wasm-gen): insert syscall invocations into wasm wisely ( #3242 ) #103
Workflow file for this run
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: Build | |
on: | |
workflow_call: | |
inputs: | |
cache: | |
type: string | |
required: true | |
macos: | |
type: boolean | |
default: false | |
workflow_dispatch: | |
inputs: | |
title: | |
type: string | |
description: "Pull request title that triggers this workflow." | |
number: | |
type: string | |
description: "Pull request number that triggers this workflow" | |
run-name: ${{ inputs.title }} ( ${{ format('#{0}', inputs.number) }} ) | |
env: | |
CARGO_INCREMENTAL: 0 | |
CARGO_TERM_COLOR: always | |
RUST_BACKTRACE: short | |
TERM: xterm-256color | |
BINARYEN_VERSION: version_111 | |
jobs: | |
linux: | |
runs-on: [kuberunner, github-runner-02] | |
env: | |
LLVM_PROFILE_FILE: "gear-%p-%m.profraw" | |
RUSTUP_HOME: /tmp/rustup_home | |
SCCACHE_DIR: ${{ inputs.cache }} | |
steps: | |
- name: "ACTIONS: Checkout" | |
uses: actions/checkout@v4 | |
- name: "Install: Set cargo path" | |
run: echo "/tmp/cargo/bin" >> $GITHUB_PATH | |
- name: "Install: Rust toolchain" | |
uses: dsherret/rust-toolchain-file@v1 | |
- name: "Show: Versioning" | |
run: ./scripts/gear.sh show | |
- name: "Install: grcov" | |
run: | | |
curl -L https://github.com/mozilla/grcov/releases/latest/download/grcov-x86_64-unknown-linux-musl.tar.bz2 | tar jxf - | |
./grcov --version | |
- name: "Install: rust-covfix" | |
run: | | |
curl -L https://github.com/gear-tech/rust-covfix/releases/download/deploy/rust-covfix-linux-x86_64.tar.xz | tar Jxf - | |
mv rust-covfix-linux-x86_64/rust-covfix ./ | |
./rust-covfix --version | |
- name: "ACTIONS: Setup environment variable" | |
if: github.ref == 'refs/heads/master' || contains(github.event.pull_request.labels.*.name, 'E0-forcecoverage') | |
run: echo "RUSTFLAGS=-Cinstrument-coverage" >> $GITHUB_ENV | |
- name: "Buid: Init" | |
run: ./scripts/gear.sh init cargo | |
- name: "Build: Gear" | |
run: ./scripts/gear.sh build gear -F gear-cli/dev --locked --release | |
- name: "Build fuzzer" | |
run: ./scripts/gear.sh build fuzz --locked --release | |
- name: "Check: Gear runtime imports" | |
run: ./target/release/wasm-proc --check-runtime-imports target/release/wbuild/gear-runtime/gear_runtime.compact.wasm | |
- name: "Check: Vara runtime imports" | |
run: ./target/release/wasm-proc --check-runtime-imports target/release/wbuild/vara-runtime/vara_runtime.compact.wasm | |
- name: "Test: Gear pallet tests with lazy pages" | |
run: ./scripts/gear.sh test pallet --features lazy-pages --release --locked | |
- name: "Test: Gear workspace" | |
run: ./scripts/gear.sh test gear --exclude gclient --exclude gcli --exclude gsdk --features pallet-gear-debug/lazy-pages --release --locked | |
- name: "Test: gsdk tests" | |
run: ./scripts/gear.sh test gsdk --release | |
- name: "Test: `gcli`" | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: ./scripts/gear.sh test gcli --release --locked --retries 3 | |
- name: "Test: Client tests" | |
run: ./scripts/gear.sh test client --release | |
- name: "Test: Runtime benchmarks and benchmark tests work" | |
run: | | |
cargo build -p gear-cli --release --features=dev,runtime-benchmarks,runtime-benchmarks-checkers | |
# check that perf benchmarks works. `--steps=20` need to test, that benchmarks works for different input number. | |
./target/release/gear benchmark pallet --chain=dev --pallet=pallet_gear --steps=20 --extrinsic="*" --execution=wasm --wasm-execution=compiled --heap-pages=4096 | |
# check that read_big_state benchmarks works | |
./target/release/gear benchmark pallet --chain=dev --pallet=pallet_gear --extrinsic="read_big_state" --execution=wasm --wasm-execution=compiled --heap-pages=4096 --extra | |
# check that check/test benchmarks works | |
./target/release/gear benchmark pallet --chain=dev --pallet=pallet_gear --extrinsic="check_all" --execution=wasm --wasm-execution=compiled --heap-pages=4096 --extra | |
# check also lazy-pages benchmarks tests for native runtime | |
./target/release/gear benchmark pallet --chain=dev --pallet=pallet_gear --extrinsic="check_lazy_pages_all" --execution=native --heap-pages=4096 --extra | |
- name: "Test: Sys-calls Wasmi integrity" | |
run: ./scripts/gear.sh test syscalls --release | |
- name: "Test: `try-runtime` feature tests" | |
run: | | |
cargo test -p "pallet-*" --features try-runtime,dev --release --locked | |
- name: "Test: Try runtime migrations" | |
run: | | |
cargo build -p gear-cli --features try-runtime,dev --release --locked | |
./target/release/gear try-runtime --runtime ./target/release/wbuild/gear-runtime/gear_runtime.wasm on-runtime-upgrade --checks live --uri wss://rpc-private-testnet.gear-tech.io:443 | |
env: | |
RUST_LOG: info | |
- name: "Coverage: Aggregate" | |
if: github.ref == 'refs/heads/master' || contains(github.event.pull_request.labels.*.name, 'E0-forcecoverage') | |
run: >- | |
./grcov . --binary-path ./target/release/ -s . -t lcov --branch --ignore-not-existing | |
--ignore "/*" | |
--ignore "examples/*" | |
--ignore "utils/*" | |
--ignore "target/*" | |
--ignore "node/*" | |
--ignore "program/*" | |
--ignore "pallets/gear/src/migration.rs" | |
--ignore "pallets/gear/src/weights.rs" | |
--ignore "pallets/gear-debug/src/weights.rs" | |
--ignore "pallets/gear-messenger/src/migration.rs" | |
--ignore "pallets/gear-program/src/migration.rs" | |
--ignore "pallets/gear-program/src/weights/*" | |
--ignore "pallets/usage/src/weights.rs" | |
--ignore "pallets/usage/src/migration.rs" | |
--ignore "runtime/*" | |
--ignore "gcore/*" | |
--ignore "gstd/*" | |
--ignore "galloc/*" | |
--ignore "gtest/*" | |
--ignore "gclient/*" | |
-o ./lcov.info | |
- name: "Coverage: Fix report" | |
if: github.ref == 'refs/heads/master' || contains(github.event.pull_request.labels.*.name, 'E0-forcecoverage') | |
run: ./rust-covfix -o lcov.info lcov.info | |
- name: "Coverage: Publish" | |
if: github.ref == 'refs/heads/master' || contains(github.event.pull_request.labels.*.name, 'E0-forcecoverage') | |
uses: codecov/codecov-action@v3 | |
with: | |
file: ./lcov.info | |
- name: "Build: Production binaries" | |
if: github.event_name == 'push' | |
run: cargo build -p gear-cli -F cli --profile production | |
- name: Prepare artifacts | |
if: github.event_name == 'push' | |
run: | | |
mkdir -p artifact | |
cd target/wasm32-unknown-unknown/release | |
tar czvf ../../../artifact/examples.tar.gz *.wasm | |
cd ../../.. | |
cp target/production/wbuild/gear-runtime/gear_runtime.compact.compressed.wasm artifact/ | |
cp target/production/wbuild/gear-runtime/gear_runtime.compact.wasm artifact/ | |
cp target/production/wbuild/gear-runtime/gear_runtime.wasm artifact/ | |
cp target/production/wbuild/vara-runtime/vara_runtime.compact.compressed.wasm artifact/ | |
cp target/production/wbuild/vara-runtime/vara_runtime.compact.wasm artifact/ | |
cp target/production/wbuild/vara-runtime/vara_runtime.wasm artifact/ | |
cp target/production/gear artifact/ | |
cp target/release/wasm-proc artifact/ | |
strip artifact/gear || true | |
strip artifact/wasm-proc || true | |
- name: Upload artifacts | |
if: github.event_name == 'push' | |
uses: actions/upload-artifact@v3 | |
with: | |
path: artifact | |
- run: sccache --show-stats | |
win-cross: | |
runs-on: [kuberunner, github-runner-03] | |
env: | |
XWIN_ARCH: x86_64 | |
RUSTUP_HOME: /tmp/rustup_home | |
WINEDEBUG: fixme-all | |
CARGO_INCREMENTAL: 0 | |
CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse | |
steps: | |
- name: "ACTIONS: Checkout" | |
uses: actions/checkout@v4 | |
- name: "Install: Set cargo path" | |
run: echo "/tmp/cargo/bin" >> $GITHUB_PATH | |
- name: "Install: Rust toolchain" | |
uses: dsherret/rust-toolchain-file@v1 | |
- name: "Install: MSVC target" | |
run: rustup target add x86_64-pc-windows-msvc | |
- name: "Install: cargo config" | |
run: cp ./.github/build-win-cross/config.toml ${CARGO_HOME:-~/.cargo}/config.toml | |
- name: "Show: Versioning" | |
run: ./scripts/gear.sh show | |
- name: "Install: Wine" | |
run: | | |
wineboot | |
winetricks win10 | |
- name: "Install: LLVM" | |
run: | | |
sudo ./.github/build-win-cross/update-alternatives-clang.sh 12 100 | |
- name: "Install: binaryen" | |
run: | | |
sudo wget -c https://github.com/WebAssembly/binaryen/releases/download/$BINARYEN_VERSION/binaryen-$BINARYEN_VERSION-x86_64-linux.tar.gz -O - | sudo tar -xz -C . | |
sudo cp binaryen-$BINARYEN_VERSION/bin/wasm-opt /usr/bin/ | |
- name: "Install: cargo-xwin" | |
run: | | |
curl -L https://github.com/rust-cross/cargo-xwin/releases/download/v0.14.0/cargo-xwin-v0.14.0.x86_64-unknown-linux-musl.tar.gz | tar zxf - | |
mv ./cargo-xwin ${CARGO_HOME:-~/.cargo}/bin/ | |
- name: "Build: Node" | |
run: ./scripts/gear.sh build node --release --locked | |
env: | |
CARGO_BUILD_TARGET: x86_64-pc-windows-msvc | |
# These tests randomly stops responding | |
#- name: "Test: Client tests" | |
# run: | | |
# cp ./target/x86_64-pc-windows-msvc/release/gear.exe ./target/release/ | |
# ./scripts/gear.sh test client | |
# env: | |
# CARGO_BUILD_TARGET: x86_64-pc-windows-msvc | |
- name: "Test: Lazy pages" | |
run: >- | |
cargo xwin test | |
-p "pallet-*" | |
-p gear-lazy-pages | |
-p gear-runtime-interface | |
--features=lazy-pages | |
--release | |
env: | |
CARGO_BUILD_TARGET: x86_64-pc-windows-msvc | |
macos: | |
needs: linux | |
if: ${{ always() && inputs.macos }} | |
uses: ./.github/workflows/build-macos.yml |