name: CI
on:
push:
branches: [master]
pull_request:
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
defaults:
run:
shell: bash
env:
CARGO_TERM_COLOR: always
jobs:
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Install system deps (git2/openssl)
run: sudo apt-get update && sudo apt-get install -y libssl-dev zlib1g-dev
- name: Clippy (all targets, warnings as errors)
run: cargo clippy --all-targets --locked -- -D warnings
- name: Docs (warnings as errors)
run: RUSTDOCFLAGS='-Dwarnings' cargo doc --no-deps --locked
test:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Install system deps (git2/openssl)
if: runner.os == 'Linux'
run: sudo apt-get update && sudo apt-get install -y libssl-dev zlib1g-dev
- name: Test
run: cargo test --locked
lint-workflow:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: raven-actions/actionlint@v2
lint-docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: markdownlint (markdownlint-cli2)
run: npx --yes markdownlint-cli2 "*.md" "docs/**/*.md" "!CHANGELOG.md" "!STATUS.md"
- name: Link check (lychee)
uses: lycheeverse/lychee-action@v2
with:
args: --cache --max-cache-age 1d --verbose --no-progress "*.md" "docs/**/*.md"
fail: true