From a26788b6dbbd8a4dcd66b0d9beab3b76e323ce26 Mon Sep 17 00:00:00 2001 From: Jack Grigg Date: Thu, 7 Dec 2023 10:45:51 +0000 Subject: [PATCH] Add CI --- .github/dependabot.yml | 10 +++++ .github/workflows/ci.yml | 79 ++++++++++++++++++++++++++++++++++++++++ rust-toolchain.toml | 3 ++ src/lib.rs | 1 + 4 files changed, 93 insertions(+) create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/ci.yml create mode 100644 rust-toolchain.toml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..a070231 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,10 @@ +version: 2 +updates: +- package-ecosystem: github-actions + directory: "/" + schedule: + interval: daily + timezone: Etc/UTC + open-pull-requests-limit: 10 + labels: + - "A-CI" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..60021df --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,79 @@ +name: CI checks + +on: [push, pull_request] + +jobs: + test: + name: Test on ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, windows-latest, macOS-latest] + steps: + - uses: actions/checkout@v4 + - name: Run tests + run: cargo test --all-features --verbose + - name: Verify working directory is clean + run: git diff --exit-code + + build-latest: + name: Latest build on ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, windows-latest, macOS-latest] + steps: + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@stable + id: toolchain + - run: rustup override set ${{steps.toolchain.outputs.name}} + - name: Remove lockfile to build with latest dependencies + run: rm Cargo.lock + - name: Build crate + run: cargo build --all-targets --all-features --verbose + - name: Verify working directory is clean (excluding lockfile) + run: git diff --exit-code ':!Cargo.lock' + + build-nodefault: + name: Build target ${{ matrix.target }} + runs-on: ubuntu-latest + strategy: + matrix: + target: + - wasm32-wasi + steps: + - uses: actions/checkout@v4 + - name: Add target + run: rustup target add ${{ matrix.target }} + - name: Build crate + run: cargo build --no-default-features --verbose --target ${{ matrix.target }} + + clippy: + name: Clippy (MSRV) + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Run Clippy + uses: auguwu/clippy-action@1.3.0 + with: + token: ${{ secrets.GITHUB_TOKEN }} + working-directory: ${{ inputs.target }} + deny: warnings + + doc-links: + name: Intra-doc links + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - run: cargo fetch + # Requires #![deny(rustdoc::broken_intra_doc_links)] in crate. + - name: Check intra-doc links + run: cargo doc --all-features --document-private-items + + fmt: + name: Rustfmt + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Check formatting + run: cargo fmt -- --check diff --git a/rust-toolchain.toml b/rust-toolchain.toml new file mode 100644 index 0000000..9355f33 --- /dev/null +++ b/rust-toolchain.toml @@ -0,0 +1,3 @@ +[toolchain] +channel = "1.56.0" +components = ["clippy", "rustfmt"] diff --git a/src/lib.rs b/src/lib.rs index e69de29..9dd0e43 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -0,0 +1 @@ +#![deny(rustdoc::broken_intra_doc_links)]