Retarget Substrate patches for Polkadot SDK repository #1638
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: CI | |
on: | |
pull_request: | |
push: | |
branches: | |
- master | |
# smoelius: Every Thursday at 3:00 UTC (Wednesday at 22:00 EST), run `cargo test -- --ignored`. | |
schedule: | |
- cron: "0 3 * * 4" | |
workflow_dispatch: | |
concurrency: | |
group: ci-${{ github.ref }} | |
cancel-in-progress: true | |
env: | |
CARGO_TERM_COLOR: always | |
jobs: | |
lint: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Dylint versions | |
run: cargo search dylint | sort | tee dylint_versions | |
# smoelius: The `~/.cargo/` entries are from: | |
# * https://github.com/actions/cache/blob/main/examples.md#rust---cargo. | |
# * https://doc.rust-lang.org/cargo/guide/cargo-home.html#caching-the-cargo-home-in-ci | |
# The rest were added by me. | |
- uses: actions/cache@v3 | |
with: | |
path: | | |
~/.cargo/bin/ | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
~/.dylint_drivers/ | |
~/.rustup/toolchains/ | |
target/dylint/ | |
key: ${{ runner.os }}-dylint-${{ hashFiles('dylint_versions') }} | |
- name: Rustup | |
run: rustup update | |
- name: Install llvm | |
run: sudo apt-get install llvm | |
- name: Actionlint | |
run: go install github.com/rhysd/actionlint/cmd/actionlint@latest && "$HOME"/go/bin/actionlint --shellcheck='-e SC2016' | |
- name: Shellcheck | |
run: shellcheck --exclude=SC2002 scripts/* | |
- name: Prettier | |
run: npm install -g prettier && prettier --check '**/*.json' '**/*.md' '**/*.yml' | |
- name: Markdown link check | |
run: npm install -g markdown-link-check && markdown-link-check ./**/*.md | |
# https://github.com/DevinR528/cargo-sort/issues/57#issuecomment-1457714872 | |
- name: Cargo sort | |
run: | | |
cargo install cargo-sort || true | |
find . -name Cargo.toml -print0 | xargs -0 -n 1 dirname | xargs -n 1 cargo sort --check --grouped --no-format | |
- name: Format | |
run: | | |
rustup +nightly component add rustfmt | |
cargo +nightly fmt && git diff --exit-code | |
- name: License | |
run: | | |
cargo install cargo-license || true | |
./scripts/check_licenses.sh | |
- name: Clippy | |
run: | | |
rustup +nightly component add clippy | |
./scripts/clippy.sh | |
- name: Dylint | |
run: | | |
cargo install cargo-dylint dylint-link || true | |
./scripts/dylint.sh | |
- name: Udeps | |
run: | | |
cargo install cargo-udeps || true | |
cargo clean && cargo +nightly udeps --features=test-fuzz/auto_concretize --all-targets | |
test: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
serde_format: [bincode, cbor, cbor4ii] | |
toolchain: [stable, nightly] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Set toolchain | |
run: | | |
rustup default ${{ matrix.toolchain }} | |
rustup component add rust-src | |
rustup target add wasm32-unknown-unknown | |
- name: Install llvm | |
run: sudo apt-get install llvm | |
# smoelius: The Substrate tests require `protoc`. | |
- name: Install protoc | |
run: sudo apt-get install protobuf-compiler | |
- name: Install cargo-afl | |
run: cargo install cargo-afl | |
- name: Run afl-system-config | |
run: cargo afl system-config | |
# smoelius: I expect this list to grow. | |
- name: Install tools | |
run: | | |
cargo install cargo-supply-chain || true | |
- name: Test | |
run: | | |
AUTO_CONCRETIZE= | |
SHUFFLE= | |
if [[ ${{ matrix.toolchain }} = nightly ]]; then | |
AUTO_CONCRETIZE='--features=test-fuzz/auto_concretize' | |
SHUFFLE='-Z unstable-options --shuffle --test-threads=1' | |
fi | |
TEST_CMD="cargo test --features=test-fuzz/serde_${{ matrix.serde_format }} $AUTO_CONCRETIZE -- --nocapture $SHUFFLE" | |
$TEST_CMD | |
if [[ ${{ github.event_name }} = 'schedule' ]] || | |
git diff --name-only ${{ github.event.pull_request.base.sha }} | grep -w 'patches\|third_party' >/dev/null | |
then | |
$TEST_CMD --ignored | |
fi | |
env: | |
RUST_BACKTRACE: 1 | |
RUST_LOG: warn | |
all-checks: | |
needs: | |
- lint | |
- test | |
runs-on: ubuntu-latest | |
steps: | |
- run: true |