Skip to content

CI

CI #733

Workflow file for this run

name: CI
on:
pull_request:
push:
branches: main
schedule:
- cron: "0 18 * * 1,4,6" # 1800 UTC every Monday, Thursday, Saturday
jobs:
tests:
name: Unit tests
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [windows-latest, macos-latest, ubuntu-latest]
rust_version: [stable]
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Install Rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: ${{ matrix.rust_version }}
# components: llvm-tools-preview
override: true
- name: Cache Rust dependencies
uses: Swatinem/rust-cache@v1
# - name: Install cargo-llvm-cov
# uses: taiki-e/install-action@cargo-llvm-cov
# - name: Generate code coverage
# env:
# RUST_BACKTRACE: "1"
# run: cargo llvm-cov --all-features --lcov --output-path lcov.info
# - name: Upload code coverage results
# uses: codecov/codecov-action@v3
# with:
# # token: ${{ secrets.CODECOV_TOKEN }}
# fail_ci_if_error: true
# verbose: true
- name: Run unit tests
run: cargo test --all-features --verbose
clippy_check:
name: Clippy
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Install Rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
- name: Install clippy
run: rustup component add clippy
- name: Cache Rust dependencies
uses: Swatinem/rust-cache@v1
- name: Cargo clippy
uses: actions-rs/clippy-check@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
args: --all-features --all-targets -- -D warnings
env:
RUST_BACKTRACE: "1"
cargo_fmt:
name: Enforce Rust code format
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Install stable toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: nightly
override: true
components: rustfmt
- name: Check format
uses: actions-rs/cargo@v1
with:
command: fmt
args: --all -- --check
cargo-deny:
name: License / vulnerability audit
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
checks:
- advisories
- bans licenses sources
# Prevent sudden announcement of a new advisory from failing CI:
continue-on-error: ${{ matrix.checks == 'advisories' }}
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Audit crate dependencies
uses: EmbarkStudios/cargo-deny-action@v1
with:
command: check ${{ matrix.checks }}
unused_deps:
name: Check for unused dependencies
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Install Rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: nightly
override: true
- name: Run cargo-udeps
uses: aig787/cargo-udeps-action@v1
with:
version: latest
args: --all-targets --all-features