Mark 347e69ddac
Some checks failed
CI / Typst formatting (push) Successful in 14s
CI / Typos (push) Successful in 16s
CI / Build (push) Failing after 10m57s
Publish package
2025-01-22 09:51:11 -08:00

108 lines
3.2 KiB
YAML

name: CI
on:
push:
pull_request:
workflow_dispatch:
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 \
python3-requests
# 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/scripts/build.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: 14
# Upload build output
- name: "Save output"
uses: actions/upload-artifact@v3
with:
name: "Build output"
path: "output/*"
retention-days: 7
- name: "Publish package (hash)"
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
run: |
PUBLISH_USER="${{ secrets.PUBLISH_USER }}" \
PUBLISH_KEY="${{ secrets.PUBLISH_KEY }}" \
VERSION="${{ github.sha }}" \
PACKAGE="${{ vars.PACKAGE }}" \
python tools/scripts/publish.py
- name: "Publish package (latest)"
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
run: |
PUBLISH_USER="${{ secrets.PUBLISH_USER }}" \
PUBLISH_KEY="${{ secrets.PUBLISH_KEY }}" \
VERSION="latest" \
PACKAGE="${{ vars.PACKAGE }}" \
python tools/scripts/publish.py