Skip to content

Add weekly sanitizer run to CI (#342) #588

Add weekly sanitizer run to CI (#342)

Add weekly sanitizer run to CI (#342) #588

Workflow file for this run

name: CI
on:
push:
branches:
- master
paths:
- '**.rs'
- '.github/workflows/ci.yml'
pull_request:
branches:
- master
paths:
- '**.rs'
- '.github/workflows/ci.yml'
env:
CARGO_TERM_COLOR: always
jobs:
build_and_test:
strategy:
matrix:
include:
# Linux
- os: ubuntu-latest
target: x86_64-unknown-linux-gnu
- os: ubuntu-latest
target: x86_64-unknown-linux-musl
- os: ubuntu-latest
target: i686-unknown-linux-gnu
# MacOS
- os: macos-latest
target: x86_64-apple-darwin
# Windows
- os: windows-latest
target: x86_64-pc-windows-gnu
- os: windows-latest
target: x86_64-pc-windows-msvc
- os: windows-latest
target: i686-pc-windows-msvc
# WASI
- os: ubuntu-latest
target: wasm32-wasip1
# MSRV (Linux)
- os: ubuntu-latest
target: x86_64-unknown-linux-gnu
toolchain: "1.80"
# MSRV (MacOS)
- os: macos-latest
target: x86_64-apple-darwin
toolchain: "1.80"
# MSRV (Windows)
- os: windows-latest
target: x86_64-pc-windows-gnu
toolchain: "1.80"
# MSRV (WASI)
- os: ubuntu-latest
target: wasm32-wasi
toolchain: "1.80"
runs-on: ${{ matrix.os }}
env:
RUSTFLAGS: '-D warnings'
steps:
- uses: actions/checkout@v4
- name: Install gcc-multilib
if: matrix.target == 'i686-unknown-linux-gnu'
run: |
sudo apt-get update
sudo apt-get install gcc-multilib
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.toolchain || 'stable' }}
targets: ${{ matrix.target }}
- name: Build
run: cargo build
- name: Run tests
run: cargo test --verbose --all-features --no-fail-fast
build_and_test_nightly_with_coverage:
strategy:
matrix:
include:
# Nightly (Linux)
- os: ubuntu-latest
target: x86_64-unknown-linux-gnu
# Nightly (MacOS)
- os: macos-latest
target: x86_64-apple-darwin
# Nightly (Windows)
- os: windows-latest
target: x86_64-pc-windows-gnu
# Nightly (WASI)
- os: ubuntu-latest
target: wasm32-wasip1
runs-on: ${{ matrix.os }}
env:
RUSTFLAGS: '-D warnings -C instrument-coverage'
steps:
- uses: actions/checkout@v4
- name: Install Rust toolchain
run: |
rustup toolchain install nightly --component llvm-tools-preview --allow-downgrade
rustup override set nightly
rustup target add --toolchain nightly ${{ matrix.target }}
- name: Build
run: cargo build
- name: Run tests with coverage instrumentation
run: cargo test --verbose --all-features --no-fail-fast
env:
LLVM_PROFILE_FILE: 'kibi-%p-%m.profraw'
- name: Collect code coverage results
run: |
cargo install grcov
grcov . --binary-path ./target/debug/ --source-dir . --output-types lcov --branch --output-path lcov.info --keep-only 'src/*'
- name: Upload code coverage results
uses: codecov/codecov-action@v4
with:
files: lcov.info
flags: ${{ matrix.target }}
fail_ci_if_error: false
verbose: true
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
static_checks:
strategy:
matrix:
include:
# Unix
- os: ubuntu-latest
target: x86_64-unknown-linux-gnu
# MacOS
- os: macos-latest
target: x86_64-apple-darwin
# Windows
- os: windows-latest
target: x86_64-pc-windows-gnu
# WASI
- os: ubuntu-latest
target: wasm32-wasip1
runs-on: ${{ matrix.os }}
permissions:
pull-requests: write
checks: write
steps:
- uses: actions/checkout@v4
- name: Install nightly with clippy and rustfmt
uses: dtolnay/rust-toolchain@nightly
with:
targets: ${{ matrix.target }}
components: rustfmt, clippy
- name: Format
if: ${{ github.event_name == 'pull_request' && matrix.target == 'x86_64-unknown-linux-gnu' }}
uses: mbrobbel/rustfmt-check@master
with:
token: ${{ secrets.GITHUB_TOKEN }}
mode: review
- name: Format
if: ${{ github.event_name != 'pull_request' || matrix.target == 'x86_64-unknown-linux-gnu' }}
run: cargo fmt --check
- name: Set up cargo-action-fmt
if: ${{ github.event_name == 'pull_request' && matrix.target == 'x86_64-unknown-linux-gnu' }}
uses: olix0r/cargo-action-fmt/setup@v2
- name: Clippy
if: ${{ github.event_name == 'pull_request' && matrix.target == 'x86_64-unknown-linux-gnu' }}
run: cargo clippy --all-features --all-targets --target ${{ matrix.target }} -q --message-format=json | cargo-action-fmt
- name: Clippy
if: ${{ github.event_name != 'pull_request' || matrix.target != 'x86_64-unknown-linux-gnu' }}
run: cargo clippy --all-features --all-targets --target ${{ matrix.target }}