safe dep updates #192
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push | |
env: | |
CARGO_TERM_COLOR: always | |
# Skip incremental build and debug info generation in CI | |
CARGO_INCREMENTAL: 0 | |
CARGO_PROFILE_DEV_DEBUG: 0 | |
jobs: | |
accept: | |
name: Accept | |
runs-on: ubuntu-latest | |
needs: [lint, test] | |
steps: | |
- name: Accept | |
run: true | |
lint: | |
name: Lint | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Install rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: nightly | |
override: true | |
components: rustfmt, clippy | |
- name: Cache build | |
uses: Swatinem/rust-cache@v2 | |
with: | |
key: cache-v1 | |
- name: Check formatting | |
uses: actions-rs/cargo@v1 | |
with: | |
command: fmt | |
args: --all -- --check | |
- uses: actions-rs/clippy-check@v1 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
args: --locked --workspace --all-features --all-targets | |
- name: Check docs | |
uses: actions-rs/cargo@v1 | |
with: | |
command: doc | |
args: --locked --workspace --all-features --no-deps --document-private-items | |
features: | |
name: Test feature sets | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
features: | |
- "" | |
- mimalloc | |
- metered-allocator | |
- mimalloc,metered-allocator | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Install rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
override: true | |
- name: Cache build | |
uses: Swatinem/rust-cache@v2 | |
with: | |
key: cache-v1 | |
- name: Build and test main | |
run: cargo test --locked --test main --features "${{ matrix.features }}" | |
test: | |
name: Test | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
rust: | |
- stable | |
- nightly | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Install rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: ${{ matrix.rust }} | |
override: true | |
- name: Cache build | |
uses: Swatinem/rust-cache@v2 | |
with: | |
key: cache-v1 | |
# Cargo doc test is not included in `--all-targets` so we call it separately. | |
# See <https://github.com/rust-lang/cargo/issues/6669> | |
# Cargo doc test also doesn't support `--no-run`, so we run it but | |
# have it just print `--help`. | |
- name: Build tests | |
run: | | |
cargo test --locked --workspace --all-features --all-targets --no-run | |
cargo test --locked --workspace --all-features --doc -- --help | |
- name: Run tests | |
run: | | |
cargo test --locked --workspace --all-features --all-targets -- --nocapture | |
cargo test --locked --workspace --all-features --doc -- --nocapture | |
codecov: | |
# See <https://doc.rust-lang.org/nightly/unstable-book/compiler-flags/source-based-code-coverage.html> | |
name: Coverage | |
runs-on: ubuntu-latest | |
env: | |
RUSTFLAGS: -Cinstrument-coverage | |
RUSTDOCFLAGS: -C instrument-coverage -Z unstable-options --persist-doctests target/debug/doctestbins | |
LLVM_PROFILE_FILE: profile-%m.profraw | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Install rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: nightly | |
override: true | |
components: llvm-tools-preview | |
- name: Cache build | |
uses: Swatinem/rust-cache@v2 | |
with: | |
key: cache-v1 | |
- name: Install cargo-binutils | |
run: cargo install cargo-binutils | |
- name: Build tests with coverage | |
run: | | |
cargo test --workspace --locked --all-features --all-targets --no-fail-fast --no-run | |
cargo test --workspace --locked --all-features --doc --no-fail-fast -- --help | |
- name: Run tests with coverage | |
run: | | |
cargo test --workspace --locked --all-features --all-targets --no-fail-fast -- --nocapture | |
cargo test --workspace --locked --all-features --doc --no-fail-fast | |
- name: Merge execution traces | |
run: cargo profdata -- merge -sparse $(find . -iname "profile-*.profraw") -o profile.profdata | |
- name: Export to lcov format for codecov | |
# See <https://doc.rust-lang.org/nightly/unstable-book/compiler-flags/instrument-coverage.html#including-doc-tests> | |
run: | |
cargo cov -- export | |
--format=lcov > profile.lcov | |
--instr-profile=profile.profdata | |
$( | |
for file in | |
$( | |
cargo test --locked --all-features --all-targets | |
--no-fail-fast --no-run --message-format=json | |
| jq -r "select(.profile.test == true) | .filenames[]" | |
| grep -v dSYM - | |
) | |
target/debug/doctestbins/*/rust_out; | |
do | |
[[ -x $file ]] && printf "%s %s " -object $file ; | |
done | |
) | |
- name: Submit to codecov.io | |
uses: codecov/codecov-action@v3.1.1 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} # Optional for public repos | |
flags: test | |
fail_ci_if_error: true | |
verbose: true | |
security_audit: | |
name: Dependency Security Audit | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: nightly | |
default: true | |
- uses: actions-rs/audit-check@v1 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} |