Skip to content
This repository has been archived by the owner on Oct 22, 2024. It is now read-only.

Electra upgrade

Electra upgrade #622

Workflow file for this run

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/[email protected]
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/[email protected]
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 [email protected] &&
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