Rework features #1555
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: Format README | |
run: ./scripts/update_README.sh && 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 }} | |
- 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: The wasm32 target is needed for some Substrate tests, regardless of the toolchain | |
# used to build test-fuzz. | |
- name: Add wasm32 target | |
run: | | |
rustup target add wasm32-unknown-unknown | |
rustup +nightly target add wasm32-unknown-unknown | |
# 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 |