This repository has been archived by the owner on Oct 22, 2024. It is now read-only.
Electra upgrade #620
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: bridge | |
on: | |
push: | |
paths: | |
- "bridges/snowbridge/**" | |
- "!bridges/snowbridge/README.md" | |
- "!bridges/snowbridge/LICENSE" | |
branches: | |
- snowbridge | |
pull_request: | |
workflow_dispatch: | |
env: | |
FUZZ_MAX_LEN: 10000000000 | |
FUZZ_MAX_RUNS: 30000 | |
RUST_NIGHTLY: "2024-02-08" | |
jobs: | |
format: | |
runs-on: snowbridge-runner | |
env: | |
CARGO_INCREMENTAL: 0 | |
RUST_BACKTRACE: 1 | |
RUSTFLAGS: -C debuginfo=1 | |
SKIP_WASM_BUILD: 1 | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
submodules: "true" | |
- uses: arduino/setup-protoc@v2 | |
with: | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
- uses: actions/cache@v1 | |
with: | |
path: | | |
~/.cargo/registry | |
~/.cargo/git | |
key: ${{ runner.os }}-cargo-${{ hashFiles('Cargo.lock') }} | |
restore-keys: | | |
${{ runner.os }}-cargo- | |
- uses: actions/setup-node@v4.0.0 | |
with: | |
node-version: "18.x" | |
registry-url: "https://npm.pkg.github.com" | |
scope: "@paritytech" | |
- name: setup rust toolchain | |
run: | | |
rustup target add wasm32-unknown-unknown | |
curl -LO https://github.com/paritytech/rustc-rv32e-toolchain/releases/download/v1.1.0/rust-rve-nightly-2024-01-05-x86_64-unknown-linux-gnu.tar.zst | |
tar -I zstd -xf rust-rve-nightly-2024-01-05-x86_64-unknown-linux-gnu.tar.zst | |
mv rve-nightly ~/.rustup/toolchains/ | |
rustup toolchain install nightly | |
rustup component add rustfmt --toolchain nightly | |
rustup show | |
- name: format | |
run: > | |
cargo +nightly fmt | |
-p snowbridge-pallet-ethereum-client | |
-p snowbridge-pallet-inbound-queue | |
-p snowbridge-pallet-outbound-queue | |
-p snowbridge-outbound-queue-merkle-tree | |
-p snowbridge-pallet-system | |
-p snowbridge-beacon-primitives | |
-p snowbridge-core | |
-p snowbridge-ethereum | |
-p snowbridge-router-primitives | |
-p snowbridge-runtime-common | |
-p snowbridge-runtime-test-common | |
-p bridge-hub-rococo-runtime | |
-p bridge-hub-rococo-integration-tests | |
-p asset-hub-rococo-integration-tests | |
-p bridge-hub-westend-runtime | |
-p bridge-hub-westend-integration-tests | |
-p asset-hub-westend-integration-tests | |
-- | |
--check | |
- name: install taplo | |
run: | | |
cargo install taplo-cli --locked | |
- name: taplo | |
run: taplo format --check --config .config/taplo.toml | |
- name: install zepter | |
run: | | |
cargo install zepter -f --locked | |
- name: zepter | |
run: zepter run check | |
- name: lint-markdown | |
run: | | |
npm install -g markdownlint-cli | |
markdownlint --version | |
markdownlint --config .github/.markdownlint.yaml --ignore target | |
check: | |
runs-on: snowbridge-runner | |
env: | |
CARGO_INCREMENTAL: 0 | |
RUST_BACKTRACE: 1 | |
RUSTFLAGS: -C debuginfo=1 | |
SKIP_WASM_BUILD: 1 | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
submodules: "true" | |
- uses: arduino/setup-protoc@v2 | |
with: | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
- uses: actions/cache@v1 | |
with: | |
path: | | |
~/.cargo/registry | |
~/.cargo/git | |
key: ${{ runner.os }}-cargo-${{ hashFiles('Cargo.lock') }} | |
restore-keys: | | |
${{ runner.os }}-cargo- | |
- uses: actions/setup-node@v4.0.0 | |
with: | |
node-version: "18.x" | |
registry-url: "https://npm.pkg.github.com" | |
scope: "@paritytech" | |
- name: setup rust toolchain | |
run: | | |
rustup target add wasm32-unknown-unknown | |
curl -LO https://github.com/paritytech/rustc-rv32e-toolchain/releases/download/v1.1.0/rust-rve-nightly-2024-01-05-x86_64-unknown-linux-gnu.tar.zst | |
tar -I zstd -xf rust-rve-nightly-2024-01-05-x86_64-unknown-linux-gnu.tar.zst | |
mv rve-nightly ~/.rustup/toolchains/ | |
rustup toolchain install nightly | |
rustup component add rustfmt --toolchain nightly | |
rustup show | |
- name: cargo check | |
run: cargo check --workspace --all-features | |
- name: clippy | |
run: cargo clippy --all-features -- -D warnings | |
test: | |
needs: check | |
runs-on: snowbridge-runner | |
env: | |
CARGO_INCREMENTAL: 0 | |
RUST_BACKTRACE: 1 | |
RUSTFLAGS: -C debuginfo=1 | |
SKIP_WASM_BUILD: 1 | |
RUST_MIN_STACK: 8388608 | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
ref: ${{ github.head_ref }} | |
submodules: "true" | |
- uses: arduino/setup-protoc@v2 | |
with: | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
- uses: actions/cache@v1 | |
with: | |
path: | | |
~/.cargo/registry | |
~/.cargo/git | |
key: ${{ runner.os }}-cargo-${{ hashFiles('Cargo.lock') }} | |
restore-keys: | | |
${{ runner.os }}-cargo- | |
- name: setup rust toolchain | |
run: rustup show | |
# Increase stack limit for beacon light client tests | |
- run: sudo prlimit --pid $$ --stack=32768 | |
# Run tests for runtime-benchmarks feature | |
- name: Tests for runtime-benchmarks | |
run: > | |
cargo test | |
-p snowbridge-pallet-ethereum-client | |
-p snowbridge-pallet-inbound-queue | |
-p snowbridge-pallet-outbound-queue | |
-p snowbridge-outbound-queue-merkle-tree | |
-p snowbridge-pallet-system | |
-p snowbridge-beacon-primitives | |
-p snowbridge-core | |
-p snowbridge-ethereum | |
-p snowbridge-router-primitives | |
-p snowbridge-runtime-common | |
--features runtime-benchmarks | |
# Run tests for all features | |
- name: Tests for all features | |
run: > | |
cargo test | |
-p snowbridge-pallet-ethereum-client | |
-p snowbridge-pallet-inbound-queue | |
-p snowbridge-pallet-outbound-queue | |
-p snowbridge-outbound-queue-merkle-tree | |
-p snowbridge-pallet-system | |
-p snowbridge-beacon-primitives | |
-p snowbridge-core | |
-p snowbridge-ethereum | |
-p snowbridge-router-primitives | |
-p snowbridge-runtime-common | |
--all-features | |
coverage: | |
if: false | |
needs: check | |
runs-on: snowbridge-runner | |
env: | |
CARGO_INCREMENTAL: 0 | |
RUST_BACKTRACE: 1 | |
RUSTFLAGS: -C debuginfo=1 | |
SKIP_WASM_BUILD: 1 | |
RUST_MIN_STACK: 8388608 | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
ref: ${{ github.head_ref }} | |
submodules: "true" | |
- uses: arduino/setup-protoc@v2 | |
with: | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
- name: setup rust toolchain | |
run: rustup show | |
- name: run coverage test | |
run: > | |
cargo install cargo-tarpaulin@0.27.0 && | |
cargo tarpaulin | |
--workspace | |
--engine llvm | |
--out xml | |
- name: Upload coverage reports to Codecov with GitHub Action | |
uses: codecov/codecov-action@v3 | |
with: | |
files: cobertura.xml | |
flags: rust | |
check-cumulus: | |
runs-on: snowbridge-runner | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
submodules: "true" | |
- uses: arduino/setup-protoc@v2 | |
with: | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
- name: setup rust toolchain | |
run: rustup show | |
- name: check bridge-hub fast-runtime | |
run: > | |
cargo check | |
--release --verbose | |
-p bridge-hub-rococo-runtime | |
-p bridge-hub-westend-runtime | |
--features fast-runtime | |
- name: check bridge-hub runtime-benchmarks | |
run: > | |
cargo check | |
--release --verbose | |
-p bridge-hub-rococo-runtime | |
-p bridge-hub-westend-runtime | |
--features runtime-benchmarks | |
- name: check bridge-hub try-runtime | |
run: > | |
cargo check | |
--release --verbose | |
-p bridge-hub-rococo-runtime | |
-p bridge-hub-westend-runtime | |
--features try-runtime | |
- name: check bridge-hub all features | |
run: > | |
cargo check | |
--release --verbose | |
-p bridge-hub-rococo-runtime | |
-p bridge-hub-westend-runtime | |
--all-features | |
- name: check asset-hub all features | |
run: > | |
cargo check | |
--release --verbose | |
-p asset-hub-rococo-runtime | |
-p asset-hub-westend-runtime | |
--all-features | |
runtime-tests: | |
needs: check | |
runs-on: snowbridge-runner | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
submodules: "true" | |
- uses: arduino/setup-protoc@v2 | |
with: | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
- name: setup rust toolchain | |
run: rustup show | |
- name: snowbridge runtime tests | |
run: > | |
RUST_LOG=xcm=trace cargo test | |
-p bridge-hub-rococo-runtime | |
-p bridge-hub-westend-runtime | |
--test snowbridge | |
-- --nocapture | |
integration-tests: | |
needs: check | |
runs-on: snowbridge-runner | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
submodules: "true" | |
- uses: arduino/setup-protoc@v2 | |
with: | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
- name: setup rust toolchain | |
run: rustup show | |
- name: bridge-hub and asset-hub integration tests | |
run: > | |
RUST_LOG=xcm=trace cargo test | |
-p bridge-hub-rococo-integration-tests | |
-p asset-hub-rococo-integration-tests | |
-p bridge-hub-westend-integration-tests | |
-p asset-hub-westend-integration-tests | |
-- --nocapture | |
beacon-fuzz: | |
if: false | |
needs: test | |
runs-on: snowbridge-runner | |
env: | |
CARGO_INCREMENTAL: 0 | |
RUST_BACKTRACE: 1 | |
RUSTFLAGS: -C debuginfo=1 | |
SKIP_WASM_BUILD: 1 | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
ref: ${{ github.head_ref }} | |
submodules: "true" | |
- uses: actions/cache@v1 | |
with: | |
path: | | |
~/.cargo/registry | |
~/.cargo/git | |
key: ${{ runner.os }}-cargo-${{ hashFiles('Cargo.lock') }} | |
restore-keys: | | |
${{ runner.os }}-cargo- | |
- name: install nightly | |
run: rustup install --profile minimal nightly-$RUST_NIGHTLY | |
- name: Install cargo-fuzz from crates.io | |
uses: baptiste0928/cargo-install@v2 | |
with: | |
crate: cargo-fuzz | |
version: "^0.11.2" | |
- name: Fuzz force checkpoint extrinsic | |
run: > | |
cd bridges/snowbridge/pallets/ethereum-beacon-client && cargo +nightly-$RUST_NIGHTLY fuzz run fuzz_force_checkpoint -- | |
-max_len=$FUZZ_MAX_LEN -runs=$FUZZ_MAX_RUNS | |
- name: Fuzz submit extrinsic | |
run: > | |
cd bridges/snowbridge/pallets/ethereum-beacon-client && cargo +nightly-$RUST_NIGHTLY fuzz run fuzz_submit -- | |
-max_len=$FUZZ_MAX_LEN -runs=$FUZZ_MAX_RUNS | |
- name: Fuzz submit execution header extrinsic | |
run: > | |
cd bridges/snowbridge/pallets/ethereum-beacon-client && cargo +nightly-$RUST_NIGHTLY fuzz run fuzz_submit_execution_header -- | |
-max_len=$FUZZ_MAX_LEN -runs=$FUZZ_MAX_RUNS |