name: CI on: push: branches: ["master"] pull_request: workflow_call: env: CARGO_TERM_COLOR: always RUSTFLAGS: "-D warnings" jobs: test: name: Test (${{ matrix.os }}) runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [ubuntu-latest, macos-latest, windows-latest] steps: - uses: actions/checkout@v6 - name: Install stable toolchain uses: dtolnay/rust-toolchain@stable - name: Build run: cargo build --all-targets - name: Run tests run: cargo test lint: name: Lint runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - name: Install stable toolchain with clippy and rustfmt uses: dtolnay/rust-toolchain@stable with: components: clippy, rustfmt - name: Cache dependencies uses: Swatinem/rust-cache@v2 - name: Check formatting run: cargo fmt --check --all - name: Clippy run: cargo clippy --all-targets -- -W clippy::pedantic commits: name: Conventional commits runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 with: # Full history is required for cog check to validate all commits. fetch-depth: 0 # On PRs check the PR HEAD, not the merge commit. ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} - name: Check conventional commits uses: cocogitto/cocogitto-action@v4 with: command: check # Only check commits since conventional commits were adopted. # 9b602f7 is the last commit before the first conventional commit. args: 9b602f70a60e5651771ae40a934a7d417d9e1214..HEAD deny: name: Cargo deny runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - name: Check licenses, advisories, and bans uses: EmbarkStudios/cargo-deny-action@v2 msrv: name: MSRV (1.88) runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - name: Install Rust 1.88 uses: dtolnay/rust-toolchain@1.88 - name: Cache dependencies uses: Swatinem/rust-cache@v2 - name: Check MSRV builds run: cargo check