Skip to content

ci

ci #2284

Workflow file for this run

name: ci
# trigger on pushes, PRs and every day at 03:00 GMT, 05:00 CEST
on:
push:
pull_request:
schedule:
- cron: "0 3 * * *"
jobs:
# run tests on linux, macos and windows
test:
name: Test
env:
RUST_BACKTRACE: full
runs-on: ${{ matrix.os }}
strategy:
matrix:
build:
[
linux-msrv-release,
linux-msrv-debug,
linux-nightly-release,
linux-nightly-debug,
linux-stable-release,
linux-stable-debug,
linux-beta-release,
linux-beta-debug,
macos-nightly-release,
macos-nightly-debug,
windows-nightly-release,
windows-nightly-debug,
]
include:
- build: linux-msrv-release
os: ubuntu-latest
toolchain: 1.62
release: true
- build: linux-msrv-debug
os: ubuntu-latest
toolchain: 1.62
debug: true
- build: linux-nightly-release
os: ubuntu-latest
toolchain: nightly
release: true
- build: linux-nightly-debug
os: ubuntu-latest
toolchain: nightly
debug: true
- build: macos-nightly-release
os: macos-latest
toolchain: nightly
mode: release
release: true
- build: macos-nightly-debug
os: macos-latest
toolchain: nightly
debug: true
- build: windows-nightly-release
os: windows-latest
toolchain: nightly
release: true
- build: windows-nightly-debug
os: windows-latest
toolchain: nightly
debug: true
- build: linux-beta-release
os: ubuntu-latest
toolchain: beta
release: true
- build: linux-beta-debug
os: ubuntu-latest
toolchain: beta
debug: true
- build: linux-stable-release
os: ubuntu-latest
toolchain: stable
release: true
- build: linux-stable-debug
os: ubuntu-latest
toolchain: stable
debug: true
steps:
- uses: actions/checkout@v1
- name: install toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: ${{ matrix.toolchain }}
override: true
profile: minimal
# build
- name: cargo build
run: cargo build --verbose --all
if: matrix.debug
- name: cargo build --release --all
run: cargo build --verbose --release
if: matrix.release
# run tests
- name: test
run: cargo test --verbose --all -- --nocapture
if: matrix.debug
- name: test --release
run: cargo test --verbose --release --all -- --nocapture
if: matrix.release
# run cargo cache
- name: cargo run
run: cargo run
if: matrix.debug
- name: cargo run --release
run: cargo run --release
if: matrix.release
# install cargo cache
- name: install cargo-cache
run: cargo install --force --path . --locked
if: matrix.release
- name: install cargo-cache --debug
run: cargo install --force --path . --debug --locked
if: matrix.debug
# in release mode, run the benchmarks, otherwise just test them
- name: test benchmarks debug
if: matrix.debug && matrix.toolchain == 'nightly'
run: cargo test --features bench
- name: test benchmarks release
if: matrix.release && matrix.toolchain == 'nightly'
run: cargo test --features bench --release
- name: run cargo bench
if: matrix.release && matrix.toolchain == 'nightly'
run: cargo bench
- name: actually run benchmarks
if: matrix.release && matrix.toolchain == 'nightly'
run: cargo bench --features bench
# run cargo cache
- name: run "cargo-cache"
run: cargo-cache
- name: run "cargo cache"
run: cargo cache
- name: run "cargo cache --help"
run: cargo cache --help
- name: run "cargo cache --top-cache-items 20"
run: cargo cache --top-cache-items 20
- name: run "cargo cache --gc --dry-run"
run: cargo cache --gc --dry-run
- name: run "cargo cache --gc"
run: cargo cache --gc
- name: run "cargo cache --info"
run: cargo cache --info
- name: run "cargo cache --list-dirs"
run: cargo cache --list-dirs
- name: run "cargo cache verify"
run: cargo cache verify
- name: run "cargo cache --keep-duplicate-crates 10 --dry-run"
run: cargo cache --keep-duplicate-crates 10 --dry-run
- name: run "cargo cache --keep-duplicate-crates 1 --dry-run"
run: cargo cache --keep-duplicate-crates 1 --dry-run
- name: run "cargo cache --keep-duplicate-crates 0 --dry-run"
run: cargo cache --keep-duplicate-crates 0 --dry-run
# check ci-autoclean feature
- name: install with ci_autoclean feature
run: cargo install --force --git https://github.com/matthiaskrgr/cargo-cache --no-default-features --features ci-autoclean cargo-cache
- name: run ci_autoclean
run: cargo-cache
# check for vulns in deps with cargo-audit
cargo-audit:
runs-on: ubuntu-latest
env:
RUSTC_BACKTRACE: full
steps:
- uses: actions/checkout@v1
- name: install nightly toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: nightly
override: true
profile: minimal
- name: install cargo-audit
run: cargo install cargo-audit --debug
- name: run cargo-audit
# as far as I see, cargo-cache is not using affected code in critical places
# and since there is no new chrono version out yet, there is not a lot I can do
run: cargo audit --ignore RUSTSEC-2020-0071 --ignore RUSTSEC-2020-0159
# check code with clippy
run_clippy:
runs-on: ubuntu-latest
env:
RUSTC_BACKTRACE: full
steps:
- uses: actions/checkout@v1
# we don't need rustfmt or anything here
- name: install toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: nightly
override: true
components: clippy
- name: clippy version
run: cargo clippy --version
- name: clippy all targets all features
run: cargo clippy --all-targets --all-features -- -Dwarnings
- name: clippy ci_autoclean
run: cargo clippy --no-default-features --features ci-autoclean -- -Dwarnings
- name: clippy default features
run: cargo clippy --all-targets --features default -- -Dwarnings
# make sure code formatting is consistent
rustfmt:
runs-on: ubuntu-latest
env:
RUSTC_BACKTRACE: full
steps:
- uses: actions/checkout@v1
- name: install toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: nightly
override: true
components: rustfmt
- name: rustfmt check formatting
run: cargo fmt --all -- --check