Are we park yet? #136
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: | |
push: | |
branches: [ main ] | |
pull_request: | |
branches: [ main ] | |
workflow_dispatch: | |
env: | |
CARGO_TERM_COLOR: always | |
jobs: | |
format: | |
name: Format | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Install Rust stable | |
run: rustup toolchain install stable | |
- name: Check format | |
run: cargo fmt -- --check | |
no-std: | |
name: No std | |
runs-on: ubuntu-latest | |
env: | |
NO_STD_TARGET: thumbv7m-none-eabi | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Install Rust stable | |
run: rustup toolchain install stable | |
- name: Add no_std target | |
run: rustup target add ${{ env.NO_STD_TARGET }} | |
- name: Install cargo-hack | |
uses: taiki-e/install-action@cargo-hack | |
- name: Build on no_std environment | |
run: > | |
cargo hack build | |
--target ${{ env.NO_STD_TARGET }} | |
--no-dev-deps | |
--feature-powerset | |
--skip yield,thread_local,parking | |
msrv: | |
name: MSRV | |
runs-on: ubuntu-latest | |
env: | |
CARGO_UNSTABLE_SPARSE_REGISTRY: true | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Install Rust 1.65.0 | |
# NOTE: We are actually installing the first nightly 1.66.0. It should | |
# be equivalent to stable 1.65.0. We need the nightly version to use the | |
# sparse registry feature. This massively improves the index download. | |
# Link: https://blog.rust-lang.org/2022/06/22/sparse-registry-testing.html | |
run: rustup toolchain install nightly-2022-09-18 | |
- name: Set Rust 1.65.0 as default | |
run: rustup default nightly-2022-09-18 | |
- name: Check MSRV | |
run: cargo check --all-features | |
semver: | |
name: Check semver | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Install Rust stable | |
run: rustup toolchain install stable | |
- name: Check semver violations | |
uses: obi1kenobi/cargo-semver-checks-action@v2 | |
docsrs: | |
name: Build doc | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Install Rust nightly | |
run: rustup toolchain install nightly | |
- name: Set Rust nightly as default | |
run: rustup default nightly | |
- name: Build docs | |
env: | |
RUSTDOCFLAGS: --cfg docsrs -D warnings | |
run: cargo doc --all-features | |
doc: | |
name: Test doc | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Install Rust stable | |
run: rustup toolchain install stable | |
- name: Run doc snippets | |
run: cargo test --doc --all-features | |
examples: | |
name: Examples | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Install Rust stable | |
run: rustup toolchain install stable | |
- name: Run raw example | |
run: cargo run --example raw | |
- name: Run barging example | |
run: cargo run --example barging --features barging | |
- name: Run thread_local example | |
run: cargo run --example thread_local --features thread_local | |
- name: Run lock_api example | |
run: cargo run --example lock_api --features lock_api,barging | |
- name: Run parking with thread_local example | |
run: cargo run --example parking --features parking,thread_local | |
linter: | |
name: Linter | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Install Rust stable | |
run: rustup toolchain install stable | |
- name: Install cargo-hack | |
uses: taiki-e/install-action@cargo-hack | |
- name: Lint feature powerset | |
env: | |
RUSTFLAGS: -D warnings -D clippy::pedantic -D clippy::nursery | |
run: cargo hack clippy --feature-powerset --no-dev-deps | |
- name: Lint test profile | |
env: | |
RUSTFLAGS: -D warnings -D clippy::pedantic -D clippy::nursery | |
run: cargo hack clippy --profile test --feature-powerset --no-dev-deps | |
- name: Lint loom | |
env: | |
RUSTFLAGS: --cfg loom -D warnings -D clippy::pedantic -D clippy::nursery | |
run: cargo hack clippy --profile test --feature-powerset | |
coverage: | |
name: Coverage | |
runs-on: ubuntu-latest | |
container: | |
image: xd009642/tarpaulin:latest | |
options: --security-opt seccomp=unconfined | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Generate coverage | |
run: > | |
cargo tarpaulin | |
--verbose | |
--engine llvm | |
--all-features | |
--out xml | |
- name: Upload to Codecov | |
uses: codecov/codecov-action@v3 | |
env: | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
miri: | |
name: Miri | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Install Rust nightly and Miri | |
# NOTE: not all nightly releases come with Miri | |
run: rustup toolchain install nightly --component miri | |
- name: Set Rust nightly as default | |
run: rustup default nightly | |
# NOTE: Nextest is configure to run Miri against `num-cpus` threads. | |
- name: Install latest nextest release | |
uses: taiki-e/install-action@nextest | |
- name: Miri test | |
run: cargo miri nextest run --all-features | |
loom: | |
name: Loom | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Install Rust stable | |
run: rustup toolchain install stable | |
- name: Loom test | |
env: | |
RUSTFLAGS: --cfg loom | |
run: cargo test --lib --release --all-features |