name: CI # Continuous Integration on: push: branches: - main pull_request: jobs: test: name: Test Suite runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 - name: Install Rust toolchain uses: dtolnay/rust-toolchain@nightly - uses: Swatinem/rust-cache@v2 - name: Run tests run: cargo test --locked --all-features --workspace rustfmt: name: Rustfmt runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 - name: Install Rust toolchain uses: dtolnay/rust-toolchain@nightly with: components: rustfmt - uses: Swatinem/rust-cache@v2 - name: Check formatting run: cargo fmt --all --check clippy: name: Clippy runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 - name: Install Rust toolchain uses: dtolnay/rust-toolchain@nightly with: components: clippy - uses: Swatinem/rust-cache@v2 - name: Clippy check run: cargo clippy --all-targets --all-features --workspace -- -D warnings docs: name: Docs runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 - name: Install Rust toolchain uses: dtolnay/rust-toolchain@nightly - name: Configure cache uses: Swatinem/rust-cache@v2 - name: Setup pages id: pages uses: actions/configure-pages@v4 - name: Clean docs folder run: cargo clean --doc - name: Build docs run: cargo doc --no-deps - name: Add redirect run: echo '' > target/doc/index.html - name: Remove lock file run: rm target/doc/.lock - name: Upload artifact uses: actions/upload-pages-artifact@v3 with: path: target/doc