name: CI
on:
push:
branches:
- main
pull_request:
permissions:
contents: read
env:
CARGO_TERM_COLOR: always
jobs:
pre-commit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/setup-python@v6
- uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt
- uses: pre-commit/action@v3.0.1
env:
SKIP: cargo-clippy
assets:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@stable
- run: cargo run --locked --quiet -p xtask
- run: git diff --exit-code -- assets docs/images docs/manual/images
playground:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@stable
with:
targets: wasm32-unknown-unknown
- uses: taiki-e/install-action@v2
with:
tool: wasm-pack
- run: wasm-pack test --node playground
- run: wasm-pack build playground --target web --out-dir www/pkg --no-typescript
msrv:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: 1.95.0
- run: cargo check --workspace --all-targets --locked
cross-target:
if: github.event_name == 'pull_request'
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
target:
- aarch64-apple-darwin
- aarch64-unknown-linux-gnu
- x86_64-apple-darwin
- x86_64-pc-windows-msvc
- x86_64-unknown-linux-gnu
- x86_64-unknown-linux-musl
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}
- run: cargo check --locked --target ${{ matrix.target }}
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@stable
with:
components: clippy,rustfmt
- uses: typst-community/setup-typst@v5
with:
typst-version: 0.15.1
- uses: wtfjoke/setup-tectonic@v4
- run: |
sudo apt-get update
sudo apt-get install -y poppler-utils
- run: cargo clippy --workspace --all-targets --all-features -- -D warnings
- run: cargo test --workspace --all-targets
- run: cargo test --doc
- run: cargo test --test artifacts -- --ignored
- run: typst compile --root . docs/manual.typ "${RUNNER_TEMP}/manual.pdf"