name: CI on: push: branches: - master pull_request: {} env: MSRV: 1.64.0 jobs: check-stable: # Run `cargo check` first to ensure that the pushed code at least compiles. runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - uses: dtolnay/rust-toolchain@stable - name: Check run: cargo check --workspace --all-features --all-targets check-docs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - uses: dtolnay/rust-toolchain@stable - name: cargo doc working-directory: ${{ matrix.subcrate }} env: RUSTDOCFLAGS: "-D rustdoc::broken_intra_doc_links" run: cargo doc --all-features --no-deps check-msrv: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - name: "install Rust ${{ env.MSRV }}" uses: dtolnay/rust-toolchain@master with: toolchain: ${{ env.MSRV }} - name: "install Rust nightly" uses: dtolnay/rust-toolchain@nightly - name: Select minimal versions run: | cargo update -Z minimal-versions cargo update -p lazy_static --precise 1.5.0 - name: Check run: | rustup default ${{ env.MSRV }} cargo check --all --all-targets --all-features --locked cargo-hack: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - uses: dtolnay/rust-toolchain@stable - name: install cargo-hack uses: taiki-e/install-action@cargo-hack - name: cargo hack check working-directory: ${{ matrix.subcrate }} run: cargo hack check --each-feature --no-dev-deps --workspace test-versions: # Test against the stable, beta, and nightly Rust toolchains on ubuntu-latest. needs: check-stable runs-on: ubuntu-latest strategy: # Disable fail-fast. If the test run for a particular Rust version fails, # don't cancel the other test runs, so that we can determine whether a # failure only occurs on a particular version. fail-fast: false matrix: rust: [stable, beta, nightly] steps: - uses: actions/checkout@v5 - name: "install Rust ${{ matrix.rust }}" uses: dtolnay/rust-toolchain@master with: toolchain: ${{ matrix.rust }} - name: Run tests run: cargo test --workspace --all-features test-msrv: needs: check-msrv runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - name: "install Rust ${{ env.MSRV }}" uses: dtolnay/rust-toolchain@master with: toolchain: ${{ env.MSRV }} - name: "install Rust nightly" uses: dtolnay/rust-toolchain@nightly - name: Select minimal versions run: | cargo update -Z minimal-versions cargo update -p lazy_static --precise 1.5.0 - name: test run: | rustup default ${{ env.MSRV }} cargo check --workspace --all-features --locked style: needs: check-stable runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - uses: dtolnay/rust-toolchain@stable with: components: rustfmt - name: rustfmt run: cargo fmt --all -- --check deny-check: name: cargo-deny check runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - uses: EmbarkStudios/cargo-deny-action@v1 with: command: check