name: Continuous Integration on: push: branches: [main] pull_request: branches: - "**" workflow_dispatch: branches: - "**" jobs: test: name: Test Suite runs-on: ubuntu-latest if: "! contains(toJSON(github.event.commits.*.message), '[skip-ci]')" steps: - name: Checkout sources uses: actions/checkout@v2 - name: Install nightly toolchain id: rustc-toolchain uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: nightly override: true - name: rust-cache uses: actions/cache@v3 with: path: | ~/.cargo/bin/ ~/.cargo/registry/index/ ~/.cargo/registry/cache/ ~/.cargo/git/db/ target/ key: rustc-test-${{ steps.rustc-toolchain.outputs.rustc_hash }}-cargo-${{ hashFiles('**/Cargo.toml') }} - name: Run cargo test uses: actions-rs/cargo@v1 with: command: test args: --workspace env: RUSTFLAGS: -Copt-level=3 -Cdebug-assertions -Coverflow-checks=y -Cdebuginfo=0 RUST_LOG: 1 CARGO_INCREMENTAL: 1 RUST_BACKTRACE: 1 lints: name: Formatting and Clippy runs-on: ubuntu-latest if: "! contains(toJSON(github.event.commits.*.message), '[skip-ci]')" steps: - name: Checkout sources uses: actions/checkout@v2 - name: Install nightly toolchain id: rustc-toolchain uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: nightly override: true components: rustfmt, clippy - name: rust-cache uses: actions/cache@v3 with: path: | ~/.cargo/bin/ ~/.cargo/registry/index/ ~/.cargo/registry/cache/ ~/.cargo/git/db/ target/ key: rustc-lints-${{ steps.rustc-toolchain.outputs.rustc_hash }}-cargo-${{ hashFiles('**/Cargo.toml') }} - name: Run cargo fmt uses: actions-rs/cargo@v1 with: command: fmt args: --all -- --check env: CARGO_INCREMENTAL: 1 - name: Run cargo clippy uses: actions-rs/cargo@v1 with: command: clippy args: --all-features --all-targets -- -D warnings -A incomplete-features env: # Seems necessary until https://github.com/rust-lang/rust/pull/115819 is merged. CARGO_INCREMENTAL: 0