129 lines
3.0 KiB
YAML
129 lines
3.0 KiB
YAML
name: CI
|
|
on:
|
|
pull_request:
|
|
push:
|
|
branches:
|
|
- master
|
|
|
|
env:
|
|
RUST_BACKTRACE: 1
|
|
|
|
jobs:
|
|
ci-pass:
|
|
name: CI is green
|
|
runs-on: ubuntu-latest
|
|
needs:
|
|
- style
|
|
- test
|
|
- msrv
|
|
- miri
|
|
- features
|
|
- semver
|
|
- doc
|
|
steps:
|
|
- run: exit 0
|
|
|
|
style:
|
|
name: Check Style
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- uses: dtolnay/rust-toolchain@stable
|
|
with:
|
|
components: rustfmt
|
|
- run: cargo fmt --all --check
|
|
|
|
test:
|
|
name: Test ${{ matrix.rust }} on ${{ matrix.os }}
|
|
needs: [style]
|
|
strategy:
|
|
matrix:
|
|
rust:
|
|
- stable
|
|
- beta
|
|
- nightly
|
|
os:
|
|
- ubuntu-latest
|
|
- windows-latest
|
|
- macos-latest
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- name: Install Rust (${{ matrix.rust }})
|
|
uses: dtolnay/rust-toolchain@master
|
|
with:
|
|
toolchain: ${{ matrix.rust }}
|
|
- run: cargo test --all-features
|
|
|
|
msrv:
|
|
name: Check MSRV (${{ matrix.rust }}) on ${{ matrix.os }}
|
|
needs: [style]
|
|
strategy:
|
|
matrix:
|
|
rust: [ 1.64 ] # keep in sync with 'rust-version' in Cargo.toml
|
|
os:
|
|
- ubuntu-latest
|
|
- windows-latest
|
|
- macos-latest
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- uses: dtolnay/rust-toolchain@stable
|
|
- uses: Swatinem/rust-cache@v2
|
|
- name: Resolve MSRV aware dependencies
|
|
run: |
|
|
cargo update
|
|
env:
|
|
CARGO_RESOLVER_INCOMPATIBLE_RUST_VERSIONS: fallback
|
|
- name: Install Rust (${{ matrix.rust }})
|
|
uses: dtolnay/rust-toolchain@master
|
|
with:
|
|
toolchain: ${{ matrix.rust }}
|
|
- run: cargo check --features full
|
|
|
|
miri:
|
|
name: Test with Miri
|
|
needs: [style]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- uses: dtolnay/rust-toolchain@nightly
|
|
with:
|
|
components: miri
|
|
- name: Test
|
|
env:
|
|
# Can't enable tcp feature since Miri does not support the tokio runtime
|
|
MIRIFLAGS: "-Zmiri-disable-isolation"
|
|
run: cargo miri test --all-features
|
|
|
|
features:
|
|
name: features
|
|
needs: [style]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- uses: dtolnay/rust-toolchain@stable
|
|
- uses: taiki-e/install-action@cargo-hack
|
|
- run: cargo hack --no-dev-deps check --feature-powerset --depth 2
|
|
|
|
semver:
|
|
name: semver
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- name: Check semver
|
|
uses: obi1kenobi/cargo-semver-checks-action@v2
|
|
with:
|
|
feature-group: only-explicit-features
|
|
features: full
|
|
release-type: minor
|
|
|
|
doc:
|
|
name: Build docs
|
|
needs: [style, test]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- uses: dtolnay/rust-toolchain@nightly
|
|
- run: cargo rustdoc --features full -- --cfg docsrs -D rustdoc::broken_intra_doc_links
|