@ -0,0 +1,95 @@ |
|||||
|
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 |