55 lines
1.8 KiB
YAML
55 lines
1.8 KiB
YAML
name: Build LaTeX PDF
|
|
|
|
on:
|
|
push:
|
|
paths:
|
|
- '**/*.tex'
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
GIT_SSL_NO_VERIFY: "true"
|
|
NODE_EXTRA_CA_CERTS: /usr/local/share/ca-certificates/Egregge.crt
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Find all root .tex files
|
|
id: roots
|
|
run: |
|
|
ROOTS=$(grep -rl '\\documentclass' --include='*.tex' . | sed 's|^\./||' | tr '\n' ' ')
|
|
echo "roots=$ROOTS" >> "$GITHUB_OUTPUT"
|
|
echo "Root files to build: $ROOTS"
|
|
|
|
- name: Compile all root files
|
|
if: steps.roots.outputs.roots != ''
|
|
uses: docker://texlive/texlive:latest-full
|
|
with:
|
|
entrypoint: sh
|
|
args: >-
|
|
-c "mkdir -p pdf aux && for f in ${{ steps.roots.outputs.roots }}; do
|
|
echo Building $f;
|
|
latexmk -xelatex -interaction=nonstopmode -halt-on-error -outdir=pdf -auxdir=aux \"$f\" || exit 1;
|
|
done && find pdf -type f ! -name '*.pdf' -delete"
|
|
|
|
- name: Upload built PDFs
|
|
if: steps.roots.outputs.roots != ''
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: pdf-output
|
|
path: pdf/*.pdf
|
|
|
|
- name: Commit PDFs back to repo
|
|
if: steps.roots.outputs.roots != ''
|
|
run: |
|
|
git config user.name "gitea-actions"
|
|
git config user.email "actions@gitea.local"
|
|
git remote set-url origin "https://Domipoke:${{ secrets.GITEA_PUSH_TOKEN }}@gitea.egregge.eg/Domipoke/SharedLaTeX.git"
|
|
|
|
BRANCH="${GITHUB_REF#refs/heads/}"
|
|
echo "Pushing to branch: $BRANCH"
|
|
|
|
git add pdf/*.pdf
|
|
git diff --cached --quiet || git commit -m "CI: rebuild all PDFs [skip ci]"
|
|
git push origin HEAD:refs/heads/"$BRANCH" |