name: CI on: push: pull_request: jobs: typos: name: "Typos" runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Check typos uses: crate-ci/typos@master with: config: ./tools/typos.toml typstyle: name: "Typst formatting" runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: "Download Typstyle" run: | wget -q "https://github.com/Enter-tainer/typstyle/releases/download/v0.12.14/typstyle-x86_64-unknown-linux-musl" chmod +x typstyle-x86_64-unknown-linux-musl - name: Check typst formatting run: | find . -name "*.typ" -type f -print0 | xargs -0 \ ./typstyle-x86_64-unknown-linux-musl --check build: needs: - typos - typstyle name: "Build" runs-on: ubuntu-latest permissions: contents: write steps: - uses: actions/checkout@v4 # Could instead install `texlive-full`, but that takes ~20 minutes. # We'll specify the packages we need manually. - name: "Install TeXLive" run: | sudo apt update DEBIAN_FRONTEND=noninteractive \ sudo apt install --yes \ texlive texlive-xetex \ texlive-games texlive-fonts-extra texlive-latex-extra \ texlive-pictures texlive-pstricks # Typst isn't packaged, and manual download gives us # more control anyway. - name: "Download Typst" run: | wget -q "https://github.com/typst/typst/releases/download/v0.12.0/typst-x86_64-unknown-linux-musl.tar.xz" tar -xf "typst-x86_64-unknown-linux-musl.tar.xz" mv "typst-x86_64-unknown-linux-musl/typst" . rm "typst-x86_64-unknown-linux-musl.tar.xz" rm -dr "typst-x86_64-unknown-linux-musl" # Builds all handouts, LaTeX and Typst - name: "Build handouts" run: TYPST_PATH="$(pwd)/typst" python tools/build/main.py # Upload logs, even if build fails. # LaTeX stdout/stderr isn't always helpful. - name: "Save LaTeX logs" uses: actions/upload-artifact@v3 if: always() with: name: "LaTeX logs" path: "**/*.log" retention-days: 1 # Upload build output - name: "Save output" uses: actions/upload-artifact@v3 with: name: "Build output" path: "output/*" retention-days: 10