Files
pezkuwi-subxt/.github/workflows/rust.yml
T
Alexandru Vasile 09277fe51a ci: Add subxt env var for controling test timeouts
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
2024-03-06 15:44:50 +02:00

491 lines
16 KiB
YAML

name: Rust
on:
push:
# Run jobs when commits are pushed to
# master or release-like branches:
branches:
- master
pull_request:
# Run jobs for any external PR that wants
# to merge to master, too:
branches:
- master
concurrency:
group: ${{ github.ref }}-${{ github.workflow }}
cancel-in-progress: true
env:
CARGO_TERM_COLOR: always
# Increase wasm test timeout from 20 seconds (default) to 1 minute.
WASM_BINDGEN_TEST_TIMEOUT: 60
jobs:
# fmt:
# name: Cargo fmt
# runs-on: ubuntu-latest
# steps:
# - name: Checkout sources
# uses: actions/checkout@v4
# - name: Install Rust nightly toolchain
# uses: actions-rs/toolchain@v1
# with:
# profile: minimal
# toolchain: stable
# override: true
# components: rustfmt
# - name: Rust Cache
# uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3
# - name: Cargo fmt
# uses: actions-rs/cargo@v1.0.3
# with:
# command: fmt
# args: --all -- --check
# - if: "failure()"
# uses: "andymckay/cancel-action@271cfbfa11ca9222f7be99a47e8f929574549e0a" # v0.4
# machete:
# name: "Check unused dependencies"
# runs-on: ubuntu-latest
# steps:
# - name: Checkout sources
# uses: actions/checkout@v4
# - name: Use substrate and polkadot node binaries
# uses: ./.github/workflows/actions/use-nodes
# - name: Install Rust stable toolchain
# uses: actions-rs/toolchain@v1
# with:
# profile: minimal
# toolchain: stable
# override: true
# - name: Rust Cache
# uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3
# - name: Install cargo-machete
# run: cargo install cargo-machete
# - name: Check unused dependencies
# uses: actions-rs/cargo@v1.0.3
# with:
# command: machete
# - if: "failure()"
# uses: "andymckay/cancel-action@271cfbfa11ca9222f7be99a47e8f929574549e0a" # v0.4
# clippy:
# name: Cargo clippy
# runs-on: ubuntu-latest
# needs: [fmt, machete]
# steps:
# - name: Checkout sources
# uses: actions/checkout@v4
# - name: Use substrate and polkadot node binaries
# uses: ./.github/workflows/actions/use-nodes
# - name: Install Rust stable toolchain
# uses: actions-rs/toolchain@v1
# with:
# profile: minimal
# toolchain: stable
# components: clippy
# override: true
# - name: Rust Cache
# uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3
# - name: Run clippy
# run: |
# cargo clippy --all-targets --features unstable-light-client -- -D warnings
# cargo clippy -p subxt-lightclient --no-default-features --features web -- -D warnings
# cargo clippy -p subxt --no-default-features --features web -- -D warnings
# cargo clippy -p subxt --no-default-features --features web,unstable-light-client -- -D warnings
# - if: "failure()"
# uses: "andymckay/cancel-action@271cfbfa11ca9222f7be99a47e8f929574549e0a" # v0.4
# wasm_clippy:
# name: Cargo clippy (WASM)
# runs-on: ubuntu-latest
# needs: [fmt, machete]
# steps:
# - name: Checkout sources
# uses: actions/checkout@v4
# - name: Use substrate and polkadot node binaries
# uses: ./.github/workflows/actions/use-nodes
# - name: Install Rust stable toolchain
# uses: actions-rs/toolchain@v1
# with:
# profile: minimal
# toolchain: stable
# target: wasm32-unknown-unknown
# override: true
# - name: Rust Cache
# uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3
# - name: Run clippy
# uses: actions-rs/cargo@v1
# with:
# command: clippy
# args: -p subxt --no-default-features --features web,unstable-light-client,jsonrpsee --target wasm32-unknown-unknown -- -D warnings
# - if: "failure()"
# uses: "andymckay/cancel-action@271cfbfa11ca9222f7be99a47e8f929574549e0a" # v0.4
# check:
# name: Cargo check
# runs-on: ubuntu-latest
# needs: [fmt, machete]
# steps:
# - name: Checkout sources
# uses: actions/checkout@v4
# - name: Use substrate and polkadot node binaries
# uses: ./.github/workflows/actions/use-nodes
# - name: Install Rust stable toolchain
# uses: actions-rs/toolchain@v1
# with:
# profile: minimal
# toolchain: stable
# override: true
# - name: Rust Cache
# uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3
# - name: Install cargo-hack
# uses: baptiste0928/cargo-install@v3
# with:
# crate: cargo-hack
# version: 0.5
# # A basic check over all targets together. This may lead to features being combined etc,
# # and doesn't test combinations of different features.
# - name: Cargo check all targets.
# run: cargo check --all-targets
# # Next, check subxt features.
# # - `native` feature must always be enabled
# # - `web` feature is always ignored.
# # - This means, don't check --no-default-features and don't try enabling --all-features; both will fail
# - name: Cargo hack; check each subxt feature
# run: cargo hack -p subxt --each-feature check --exclude-no-default-features --exclude-all-features --exclude-features web --features native
# # Subxt-signer has the "subxt" features enabled in the "check all targets" test. Run it on its own to
# # check it without. We can't enable subxt or web features here, so no cargo hack.
# - name: Cargo check subxt-signer
# run: |
# cargo check -p subxt-signer
# cargo check -p subxt-signer --no-default-features --features sr25519,native
# cargo check -p subxt-signer --no-default-features --features ecdsa,native
# # We can't enable web features here, so no cargo hack.
# - name: Cargo check subxt-lightclient
# run: cargo check -p subxt-lightclient
# # Next, check each other package in isolation.
# - name: Cargo hack; check each feature/crate on its own
# run: cargo hack --exclude subxt --exclude subxt-signer --exclude subxt-lightclient --exclude-all-features --each-feature check --workspace
# # Check the parachain-example code, which isn't a part of the workspace so is otherwise ignored.
# - name: Cargo check parachain-example
# run: cargo check --manifest-path examples/parachain-example/Cargo.toml
# - if: "failure()"
# uses: "andymckay/cancel-action@271cfbfa11ca9222f7be99a47e8f929574549e0a" # v0.4
# wasm_check:
# name: Cargo check (WASM)
# runs-on: ubuntu-latest
# needs: [fmt, machete]
# steps:
# - name: Checkout sources
# uses: actions/checkout@v4
# - name: Install Rust stable toolchain
# uses: actions-rs/toolchain@v1
# with:
# profile: minimal
# toolchain: stable
# target: wasm32-unknown-unknown
# override: true
# - name: Rust Cache
# uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3
# # Check WASM examples, which aren't a part of the workspace and so are otherwise missed:
# - name: Cargo check WASM examples
# run: |
# cargo check --manifest-path examples/wasm-example/Cargo.toml --target wasm32-unknown-unknown
# - if: "failure()"
# uses: "andymckay/cancel-action@271cfbfa11ca9222f7be99a47e8f929574549e0a" # v0.4
# docs:
# name: Check documentation and run doc tests
# runs-on: ubuntu-latest
# needs: [fmt, machete]
# steps:
# - name: Checkout sources
# uses: actions/checkout@v4
# - name: Use substrate and polkadot node binaries
# uses: ./.github/workflows/actions/use-nodes
# - name: Install Rust stable toolchain
# uses: actions-rs/toolchain@v1
# with:
# profile: minimal
# toolchain: stable
# override: true
# - name: Rust Cache
# uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3
# - name: Check internal documentation links
# run: RUSTDOCFLAGS="--deny rustdoc::broken_intra_doc_links" cargo doc -vv --workspace --no-deps --document-private-items
# - name: Run cargo test on documentation
# uses: actions-rs/cargo@v1.0.3
# with:
# command: test
# args: --doc
# - if: "failure()"
# uses: "andymckay/cancel-action@271cfbfa11ca9222f7be99a47e8f929574549e0a" # v0.4
# tests:
# name: "Test (Native)"
# runs-on: ubuntu-latest-16-cores
# needs: [clippy, wasm_clippy, check, wasm_check, docs]
# timeout-minutes: 30
# steps:
# - name: Checkout sources
# uses: actions/checkout@v4
# - name: Use substrate and polkadot node binaries
# uses: ./.github/workflows/actions/use-nodes
# - name: Install Rust stable toolchain
# uses: actions-rs/toolchain@v1
# with:
# profile: minimal
# toolchain: stable
# override: true
# - name: Rust Cache
# uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3
# - name: Install cargo-nextest
# run: cargo install cargo-nextest
# - name: Run tests
# uses: actions-rs/cargo@v1.0.3
# with:
# command: nextest
# args: run --workspace
# - if: "failure()"
# uses: "andymckay/cancel-action@271cfbfa11ca9222f7be99a47e8f929574549e0a" # v0.4
# unstable_backend_tests:
# name: "Test (Unstable Backend)"
# runs-on: ubuntu-latest-16-cores
# needs: [clippy, wasm_clippy, check, wasm_check, docs]
# timeout-minutes: 30
# steps:
# - name: Checkout sources
# uses: actions/checkout@v4
# - name: Use substrate and polkadot node binaries
# uses: ./.github/workflows/actions/use-nodes
# - name: Install Rust stable toolchain
# uses: actions-rs/toolchain@v1
# with:
# profile: minimal
# toolchain: stable
# override: true
# - name: Rust Cache
# uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3
# - name: Install cargo-nextest
# run: cargo install cargo-nextest
# - name: Run tests
# uses: actions-rs/cargo@v1.0.3
# with:
# command: nextest
# args: run --workspace --features unstable-backend-client
# - if: "failure()"
# uses: "andymckay/cancel-action@271cfbfa11ca9222f7be99a47e8f929574549e0a" # v0.4
# light_client_tests:
# name: "Test (Light Client)"
# runs-on: ubuntu-latest
# needs: [clippy, wasm_clippy, check, wasm_check, docs]
# timeout-minutes: 15
# steps:
# - name: Checkout sources
# uses: actions/checkout@v4
# - name: Use substrate and polkadot node binaries
# uses: ./.github/workflows/actions/use-nodes
# - name: Install Rust stable toolchain
# uses: actions-rs/toolchain@v1
# with:
# profile: minimal
# toolchain: stable
# override: true
# - name: Rust Cache
# uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3
# - name: Run tests
# uses: actions-rs/cargo@v1.0.3
# with:
# command: test
# args: --release --package integration-tests --features unstable-light-client
# - if: "failure()"
# uses: "andymckay/cancel-action@271cfbfa11ca9222f7be99a47e8f929574549e0a" # v0.4
light_client_long_running_tests:
name: "Test (Light Client Long Running)"
runs-on: ubuntu-latest-16-cores
# needs: [clippy, wasm_clippy, check, wasm_check, docs]
timeout-minutes: 60
env:
# Set timeout for subxt tests. Light client needs to syncup properly.
# Per test we timeout after 15mins, more than enough for a single test.
SUBXT_TEST_TIMEOUT: 900
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Use substrate and polkadot node binaries
uses: ./.github/workflows/actions/use-nodes
- name: Install Rust stable toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- name: Rust Cache
uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3
- name: Run tests
uses: actions-rs/cargo@v1.0.3
with:
command: test
args: --release --package integration-tests --features unstable-light-client-long-running
- if: "failure()"
uses: "andymckay/cancel-action@271cfbfa11ca9222f7be99a47e8f929574549e0a" # v0.4
# wasm_tests:
# name: Test (WASM)
# runs-on: ubuntu-latest
# needs: [clippy, wasm_clippy, check, wasm_check, docs]
# timeout-minutes: 30
# env:
# # Set timeout for wasm tests to be much bigger than the default 20 secs.
# WASM_BINDGEN_TEST_TIMEOUT: 300
# steps:
# - uses: actions/checkout@v4
# - name: Install wasm-pack
# run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
# - name: Install firefox
# uses: browser-actions/setup-firefox@latest
# - name: Install chrome
# uses: browser-actions/setup-chrome@latest
# - name: Rust Cache
# uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3
# - name: Use substrate and polkadot node binaries
# uses: ./.github/workflows/actions/use-nodes
# - name: Run subxt WASM tests
# run: |
# # `listen-addr` is used to configure p2p to accept websocket connections instead of TCP.
# # `node-key` provides a deterministic p2p address.
# substrate-node --dev --node-key 0000000000000000000000000000000000000000000000000000000000000001 --listen-addr /ip4/0.0.0.0/tcp/30333/ws > /dev/null 2>&1 &
# wasm-pack test --headless --firefox
# wasm-pack test --headless --chrome
# pkill substrate-node
# working-directory: testing/wasm-rpc-tests
# - name: Run subxt-lightclient WASM tests
# run: |
# # `listen-addr` is used to configure p2p to accept websocket connections instead of TCP.
# # `node-key` provides a deterministic p2p address.
# substrate-node --dev --node-key 0000000000000000000000000000000000000000000000000000000000000001 --listen-addr /ip4/0.0.0.0/tcp/30333/ws > /dev/null 2>&1 &
# wasm-pack test --headless --firefox
# wasm-pack test --headless --chrome
# pkill substrate-node
# working-directory: testing/wasm-lightclient-tests
# - name: Run subxt-signer WASM tests
# run: |
# wasm-pack test --headless --firefox
# wasm-pack test --headless --chrome
# working-directory: signer/wasm-tests
# - if: "failure()"
# uses: "andymckay/cancel-action@271cfbfa11ca9222f7be99a47e8f929574549e0a" # v0.4
# no-std-tests:
# name: "Test (no_std)"
# runs-on: ubuntu-latest
# needs: [machete, docs]
# timeout-minutes: 30
# steps:
# - name: Checkout sources
# uses: actions/checkout@v4
# # Note: needs nighly toolchain because otherwise we cannot define custom lang-items.
# - name: Install Rust nightly toolchain
# uses: actions-rs/toolchain@v1
# with:
# profile: minimal
# toolchain: nightly
# override: true
# target: thumbv7em-none-eabi
# - name: Install the gcc-arm-none-eabi linker
# run: sudo apt install gcc-arm-none-eabi
# - name: Rust Cache
# uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3
# # Note: We currently do not have a way to run real tests in a `no_std` environment.
# # We can only make sure that they compile to ARM thumb ISA.
# # Running the binary and inspecting the output would require an actual machine with matching ISA or some sort of emulator.
# - name: Compile `no-std-tests` crate to `thumbv7em-none-eabi` target.
# run: cargo build --target thumbv7em-none-eabi
# working-directory: testing/no-std-tests
# - if: "failure()"
# uses: "andymckay/cancel-action@271cfbfa11ca9222f7be99a47e8f929574549e0a" # v0.4