name: CI
on:
pull_request:
branches: [master]
push:
branches: [master]
workflow_dispatch:
permissions:
contents: read
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/setup-node@v4
with:
node-version: 22
cache: npm
cache-dependency-path: docs-site/package-lock.json
- run: npm ci --prefix docs-site
- run: npm test --prefix docs-site
- run: npm run docs:build --prefix docs-site
- uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy
- uses: Swatinem/rust-cache@v2
- name: Install Linux audio build dependencies
run: sudo apt-get update && sudo apt-get install --yes libasound2-dev pkg-config
- name: Validate GitHub Actions workflows
run: go run github.com/rhysd/actionlint/cmd/actionlint@v1.7.7
- name: Test release tooling
run: |
bash scripts/test-release-version.sh
bash scripts/test-set-release-version.sh
bash scripts/test-package-release.sh
bash -n scripts/*.sh
- run: cargo fmt --check
- run: cargo test --locked
- run: cargo clippy --locked --all-targets -- -D warnings
- run: cargo build --locked --release