Skip to content

Setup CI for PDF rendering #24

Setup CI for PDF rendering

Setup CI for PDF rendering #24

Workflow file for this run

name: CI
on:
workflow_dispatch:
push:
branches:
- master
paths-ignore:
- "README.adoc"
pull_request:
jobs:
test:
name: Test on Linux
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Rust
uses: dtolnay/rust-toolchain@stable
- name: Set up Rust cache
uses: Swatinem/rust-cache@v2
with:
cache-on-failure: true
- name: Run tests
run: cargo test --workspace
- name: Run N-queens (n=8) example
run: cargo run --release --example queens -- 8
test-windows:
name: Test on Windows
runs-on: windows-latest
defaults:
run:
shell: bash
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: stable-gnu
- name: Set up Rust cache
uses: Swatinem/rust-cache@v2
with:
cache-on-failure: true
- name: Run tests
run: cargo test --workspace
- name: Run N-queens (n=8) example
run: cargo run --release --example queens -- 8
fmt:
name: Rustfmt
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Rust
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt
- name: Set up Rust cache
uses: Swatinem/rust-cache@v2
- name: Run rustfmt
run: cargo fmt --all -- --check
clippy:
name: Clippy
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Rust
uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- name: Set up Rust cache
uses: Swatinem/rust-cache@v2
- name: Run clippy
run: cargo clippy --workspace --tests
build-pdf:
name: Build PDFs
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Fontist
uses: fontist/setup-fontist@v2
with:
fontist-version: "^1.21"
- name: Install fonts
run: fontist install "Libertinus Sans"
- name: Setup Typst
uses: typst-community/setup-typst@v4
with:
typst-version: ^0.14
- name: Show Typst version
run: typst --version
- name: List available fonts
run: typst fonts --font-path ~/.fontist/fonts
- name: Compile guide on BDDs
working-directory: docs/guide
run: typst compile --font-path ~/.fontist/fonts main.typ guide-bdd.pdf
- name: Compile guide on Abstract Interpretation
working-directory: examples/abstract-interpretation/guide
run: typst compile --font-path ~/.fontist/fonts main.typ guide-ai.pdf
- name: Upload PDFs as artifact
uses: actions/upload-artifact@v4
with:
name: pdf
path: |
docs/guide/guide-bdd.pdf
examples/abstract-interpretation/guide/guide-ai.pdf
deploy:
runs-on: ubuntu-latest
needs: [build-pdf]
concurrency:
group: "pages"
cancel-in-progress: false
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Download all artifacts
uses: actions/download-artifact@v5
with:
pattern: "*"
- name: Show downloaded files
run: ls -R
- name: Prepare files for gh-pages
run: |
# Create public directory
mkdir -p public
# Copy all Typst PDFs
cp pdf/*.pdf public/
- name: Deploy
uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./public
force_orphan: true