mirror of
https://github.com/clap-rs/clap
synced 2024-12-14 06:42:33 +00:00
129 lines
3.5 KiB
YAML
129 lines
3.5 KiB
YAML
|
name: CI
|
||
|
|
||
|
permissions:
|
||
|
contents: read
|
||
|
|
||
|
on:
|
||
|
pull_request:
|
||
|
push:
|
||
|
branches:
|
||
|
- main
|
||
|
|
||
|
env:
|
||
|
RUST_BACKTRACE: 1
|
||
|
CARGO_TERM_COLOR: always
|
||
|
CLICOLOR: 1
|
||
|
|
||
|
jobs:
|
||
|
ci:
|
||
|
permissions:
|
||
|
contents: none
|
||
|
name: CI
|
||
|
needs: [test, msrv, docs, rustfmt, clippy]
|
||
|
runs-on: ubuntu-latest
|
||
|
steps:
|
||
|
- name: Done
|
||
|
run: exit 0
|
||
|
test:
|
||
|
name: Test
|
||
|
strategy:
|
||
|
matrix:
|
||
|
os: ["ubuntu-latest", "windows-latest", "macos-latest"]
|
||
|
rust: ["stable"]
|
||
|
continue-on-error: ${{ matrix.rust != 'stable' }}
|
||
|
runs-on: ${{ matrix.os }}
|
||
|
steps:
|
||
|
- name: Checkout repository
|
||
|
uses: actions/checkout@v3
|
||
|
- name: Install Rust
|
||
|
uses: dtolnay/rust-toolchain@stable
|
||
|
with:
|
||
|
toolchain: ${{ matrix.rust }}
|
||
|
- uses: Swatinem/rust-cache@v2
|
||
|
- name: Build
|
||
|
run: cargo test --no-run --workspace --all-features
|
||
|
- name: Default features
|
||
|
run: cargo test --workspace
|
||
|
- name: All features
|
||
|
run: cargo test --workspace --all-features
|
||
|
- name: No-default features
|
||
|
run: cargo test --workspace --no-default-features
|
||
|
msrv:
|
||
|
name: "Check MSRV: 1.64.0"
|
||
|
runs-on: ubuntu-latest
|
||
|
steps:
|
||
|
- name: Checkout repository
|
||
|
uses: actions/checkout@v3
|
||
|
- name: Install Rust
|
||
|
uses: dtolnay/rust-toolchain@stable
|
||
|
with:
|
||
|
toolchain: 1.64.0 # MSRV
|
||
|
- uses: Swatinem/rust-cache@v2
|
||
|
- name: Default features
|
||
|
run: cargo check --workspace --all-targets
|
||
|
- name: All features
|
||
|
run: cargo check --workspace --all-targets --all-features
|
||
|
- name: No-default features
|
||
|
run: cargo check --workspace --all-targets --no-default-features
|
||
|
docs:
|
||
|
name: Docs
|
||
|
runs-on: ubuntu-latest
|
||
|
steps:
|
||
|
- name: Checkout repository
|
||
|
uses: actions/checkout@v3
|
||
|
- name: Install Rust
|
||
|
uses: dtolnay/rust-toolchain@stable
|
||
|
with:
|
||
|
toolchain: stable
|
||
|
- uses: Swatinem/rust-cache@v2
|
||
|
- name: Check documentation
|
||
|
env:
|
||
|
RUSTDOCFLAGS: -D warnings
|
||
|
run: cargo doc --workspace --all-features --no-deps --document-private-items
|
||
|
rustfmt:
|
||
|
name: rustfmt
|
||
|
runs-on: ubuntu-latest
|
||
|
steps:
|
||
|
- name: Checkout repository
|
||
|
uses: actions/checkout@v3
|
||
|
- name: Install Rust
|
||
|
uses: dtolnay/rust-toolchain@stable
|
||
|
with:
|
||
|
# Not MSRV because its harder to jump between versions and people are
|
||
|
# more likely to have stable
|
||
|
toolchain: stable
|
||
|
components: rustfmt
|
||
|
- uses: Swatinem/rust-cache@v2
|
||
|
- name: Check formatting
|
||
|
run: cargo fmt --all -- --check
|
||
|
clippy:
|
||
|
name: clippy
|
||
|
runs-on: ubuntu-latest
|
||
|
permissions:
|
||
|
security-events: write # to upload sarif results
|
||
|
steps:
|
||
|
- name: Checkout repository
|
||
|
uses: actions/checkout@v3
|
||
|
- name: Install Rust
|
||
|
uses: dtolnay/rust-toolchain@stable
|
||
|
with:
|
||
|
toolchain: 1.64.0 # MSRV
|
||
|
components: clippy
|
||
|
- uses: Swatinem/rust-cache@v2
|
||
|
- name: Install SARIF tools
|
||
|
run: cargo install clippy-sarif --version 0.3.4 --locked # Held back due to msrv
|
||
|
- name: Install SARIF tools
|
||
|
run: cargo install sarif-fmt --version 0.3.4 --locked # Held back due to msrv
|
||
|
- name: Check
|
||
|
run: >
|
||
|
cargo clippy --workspace --all-features --all-targets --message-format=json -- -D warnings --allow deprecated
|
||
|
| clippy-sarif
|
||
|
| tee clippy-results.sarif
|
||
|
| sarif-fmt
|
||
|
continue-on-error: true
|
||
|
- name: Upload
|
||
|
uses: github/codeql-action/upload-sarif@v2
|
||
|
with:
|
||
|
sarif_file: clippy-results.sarif
|
||
|
wait-for-processing: true
|