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