From 7048043be1bdd00158e118075fc84258a4290f50 Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Sun, 10 Nov 2024 06:51:20 +0000 Subject: [PATCH] Added GitHub Actions CI workflow --- .github/workflows/ci.yml | 107 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..14b3892 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,107 @@ +name: CI + +on: + push: + branches: "**" + pull_request: + branches: "**" + +env: + CARGO_TERM_COLOR: always + RUSTFLAGS: "-D warnings" + RUST_MSRV: "1.70.0" # Default fallback MSRV + +jobs: + test: + name: Basic checks + strategy: + matrix: + os: [ ubuntu-latest, macos-latest, windows-latest ] + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v4 + + - name: Install Rust + uses: dtolnay/rust-toolchain@stable + with: + components: clippy, rustfmt + + - name: Install cargo-deadlinks + run: cargo install cargo-deadlinks + + - name: Build + run: cargo build --verbose + + - name: Clippy (default features) + run: cargo clippy --all-targets + + - name: Clippy (all features) + run: cargo clippy --all-features --all-targets + + - name: Documentation + run: cargo doc --no-deps + + - name: Check deadlinks + run: cargo deadlinks + + - name: Run tests (default features) + run: cargo test + + feature-checks: + name: Feature combination checks + strategy: + matrix: + os: [ ubuntu-latest, macos-latest, windows-latest ] + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v4 + + - name: Install Rust + uses: dtolnay/rust-toolchain@stable + with: + components: clippy, rustfmt + + - name: Install cargo-hack + run: cargo install cargo-hack + + - name: Check each feature + run: cargo hack check --each-feature --no-dev-deps + + - name: Check feature powerset + run: cargo hack check --feature-powerset --no-dev-deps + + - name: Clippy each feature + run: cargo hack clippy --each-feature --all-targets + + - name: Clippy feature powerset + run: cargo hack clippy --feature-powerset --all-targets + + - name: Test each feature + run: cargo hack test --each-feature + + - name: Test feature powerset + run: cargo hack test --feature-powerset + + msrv: + name: Check MSRV + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Get MSRV from Cargo.toml + run: | + MSRV=$(cargo metadata --no-deps --format-version 1 | jq -r '.packages[0].rust_version // "${{ env.RUST_MSRV }}"') + echo "MSRV=$MSRV" >> $GITHUB_ENV + + - name: Install Rust + uses: dtolnay/rust-toolchain@master + with: + toolchain: ${{ env.MSRV }} + + - name: Debug info + run: | + echo "MSRV: $MSRV" + echo "Rust: $(rustc --version)" + + - name: Check MSRV + run: cargo check \ No newline at end of file