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 - wasm - minimal-versions - miri - semver steps: - run: exit 0 style: name: Check Style runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v5 - name: Install Rust uses: dtolnay/rust-toolchain@stable with: components: rustfmt - run: cargo fmt --all --check test: name: Test ${{ matrix.rust }} #needs: [style] strategy: matrix: rust: - stable - beta - nightly include: - rust: nightly benches: true runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v5 - name: Install Rust (${{ matrix.rust }}) uses: dtolnay/rust-toolchain@master with: toolchain: ${{ matrix.rust }} - name: Test run: cargo test - name: Test all benches if: matrix.benches run: cargo test --benches ${{ matrix.features }} msrv: name: Check MSRV runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v5 - name: Get MSRV from package metadata id: metadata run: echo "msrv=$(yq '.package.rust-version' Cargo.toml)" >> $GITHUB_OUTPUT - name: Install Rust (${{ steps.metadata.outputs.msrv }}) uses: dtolnay/rust-toolchain@master with: toolchain: ${{ steps.metadata.outputs.msrv }} - name: Test run: cargo check -p http wasm: name: WASM #needs: [style] runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v5 - name: Install Rust uses: dtolnay/rust-toolchain@stable with: targets: wasm32-unknown-unknown - name: Check run: cargo check --target wasm32-unknown-unknown minimal-versions: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - uses: dtolnay/rust-toolchain@nightly - uses: dtolnay/rust-toolchain@stable - uses: taiki-e/install-action@cargo-hack - uses: taiki-e/install-action@cargo-minimal-versions - run: cargo minimal-versions check miri: name: Miri runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v5 - name: Install Rust uses: dtolnay/rust-toolchain@nightly with: components: miri - name: Test run: MIRIFLAGS="-Zmiri-disable-isolation -Zmiri-ignore-leaks" cargo miri test semver: name: semver runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - name: Check semver uses: obi1kenobi/cargo-semver-checks-action@v2 with: release-type: minor