c27d7b96b6
Most notably: - Stop using unmaintained setup-rust action - Cache cargo and target directories - Use sccache (https://github.com/mozilla/sccache/)
144 lines
4.2 KiB
YAML
144 lines
4.2 KiB
YAML
name: CI tests
|
|
on: [push, pull_request]
|
|
|
|
env:
|
|
SCCACHE_GHA_ENABLED: "true"
|
|
RUSTC_WRAPPER: "sccache"
|
|
|
|
jobs:
|
|
build:
|
|
name: Build project
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
rustc_cache_key: ${{ steps.setup_rust.outputs.cachekey }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: dtolnay/rust-toolchain@stable
|
|
id: setup_rust
|
|
with:
|
|
components: "rustfmt, clippy"
|
|
- uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
~/.cargo/bin/
|
|
~/.cargo/registry/index/
|
|
~/.cargo/registry/cache/
|
|
~/.cargo/git/db/
|
|
target/
|
|
key: "cargo-base-${{ steps.setup_rust.outputs.cachekey }}-${{ hashFiles('**/Cargo.lock') }}"
|
|
restore-keys: |
|
|
cargo-base-${{ env.RUSTC_CACHEKEY }}
|
|
- name: Run sccache-cache
|
|
uses: mozilla-actions/sccache-action@v0.0.3
|
|
- run: cargo build --locked --all-targets
|
|
|
|
lint:
|
|
name: Run lints
|
|
runs-on: ubuntu-latest
|
|
needs: build
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
~/.cargo/bin/
|
|
~/.cargo/registry/index/
|
|
~/.cargo/registry/cache/
|
|
~/.cargo/git/db/
|
|
target/
|
|
key: "cargo-lint-${{ needs.build.outputs.rustc_cache_key }}-${{ hashFiles('**/Cargo.lock') }}"
|
|
restore-keys: |
|
|
cargo-lint-${{ env.RUSTC_CACHEKEY }}
|
|
cargo-base-${{ env.RUSTC_CACHEKEY }}
|
|
fail-on-cache-miss: true
|
|
- name: Run sccache-cache
|
|
uses: mozilla-actions/sccache-action@v0.0.3
|
|
|
|
- run: cargo fmt --all -- --check
|
|
- run: cargo check
|
|
- run: cargo clippy -- -D warnings
|
|
|
|
test-linux:
|
|
name: Test on Linux
|
|
runs-on: ubuntu-latest
|
|
needs: build
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
~/.cargo/bin/
|
|
~/.cargo/registry/index/
|
|
~/.cargo/registry/cache/
|
|
~/.cargo/git/db/
|
|
target/
|
|
key: "cargo-test-${{ needs.build.outputs.rustc_cache_key }}-${{ hashFiles('**/Cargo.lock') }}"
|
|
restore-keys: |
|
|
cargo-test-${{ env.RUSTC_CACHEKEY }}
|
|
cargo-base-${{ env.RUSTC_CACHEKEY }}
|
|
fail-on-cache-miss: true
|
|
- name: Run sccache-cache
|
|
uses: mozilla-actions/sccache-action@v0.0.3
|
|
|
|
- run: cargo test
|
|
|
|
test-windows:
|
|
name: Test on Windows
|
|
runs-on: windows-latest
|
|
needs: build
|
|
steps:
|
|
- run: git config --system core.autocrlf false && git config --system core.eol lf
|
|
- uses: actions/checkout@v4
|
|
- uses: dtolnay/rust-toolchain@stable
|
|
id: setup_rust
|
|
- uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
~/.cargo/bin/
|
|
~/.cargo/registry/index/
|
|
~/.cargo/registry/cache/
|
|
~/.cargo/git/db/
|
|
target/
|
|
key: "cargo-windows-${{ needs.build.outputs.rustc_cache_key }}-${{ hashFiles('**/Cargo.lock') }}"
|
|
restore-keys: |
|
|
cargo-windows-${{ env.RUSTC_CACHEKEY }}
|
|
cargo-base-${{ env.RUSTC_CACHEKEY }}
|
|
fail-on-cache-miss: true
|
|
- name: Run sccache-cache
|
|
uses: mozilla-actions/sccache-action@v0.0.3
|
|
|
|
- run: cargo test
|
|
|
|
coverage:
|
|
name: Code coverage
|
|
runs-on: ubuntu-latest
|
|
needs: build
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
~/.cargo/bin/
|
|
~/.cargo/registry/index/
|
|
~/.cargo/registry/cache/
|
|
~/.cargo/git/db/
|
|
target/
|
|
key: "cargo-coverage-${{ needs.build.outputs.rustc_cache_key }}-${{ hashFiles('**/Cargo.lock') }}"
|
|
restore-keys: |
|
|
cargo-coverage-${{ env.RUSTC_CACHEKEY }}
|
|
cargo-base-${{ env.RUSTC_CACHEKEY }}
|
|
fail-on-cache-miss: true
|
|
- name: Run sccache-cache
|
|
uses: mozilla-actions/sccache-action@v0.0.3
|
|
|
|
- uses: actions-rs/tarpaulin@v0.1
|
|
with:
|
|
# Constrained by https://github.com/actions-rs/tarpaulin/pull/23
|
|
version: "0.22.0"
|
|
args: "--ignore-tests"
|
|
out-type: "Html"
|
|
- uses: actions/upload-artifact@v3
|
|
with:
|
|
name: tarpaulin-report
|
|
path: tarpaulin-report.html
|