Files
SharedLaTeX/.gitea/workflows/build-pdf.yml
T
Domipoke cca07e6026
Build LaTeX PDF / build (push) Successful in 38s
trigger build
2026-07-26 22:25:13 +02:00

62 lines
2.1 KiB
YAML

name: Build LaTeX PDF
on:
push:
paths:
- '**/*.tex'
jobs:
build:
runs-on: ubuntu-latest
env:
NODE_EXTRA_CA_CERTS: /usr/local/share/ca-certificates/Egregge.crt
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 2 # need previous commit to diff against
- name: Find changed .tex root files
id: changed
run: |
apt-get update -qq && apt-get install -y -qq git > /dev/null
git config --global --add safe.directory "$GITHUB_WORKSPACE"
# root files = .tex files that contain \documentclass
CHANGED=$(git diff --name-only "${{ github.event.before }}" "${{ github.sha }}" -- '*.tex' || true)
ROOTS=""
for f in $CHANGED; do
if [ -f "$f" ] && grep -q '\\documentclass' "$f"; then
ROOTS="$ROOTS $f"
fi
done
echo "roots=$ROOTS" >> "$GITHUB_OUTPUT"
echo "Root files to build: $ROOTS"
- name: Compile changed root files
if: steps.changed.outputs.roots != ''
uses: docker://texlive/texlive:latest-full
with:
entrypoint: sh
args: >-
-c "mkdir -p pdf aux && for f in ${{ steps.changed.outputs.roots }}; do
echo Building $f;
latexmk -pdf -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.changed.outputs.roots != ''
uses: actions/upload-artifact@v3
with:
name: pdf-output
path: pdf/*.pdf
- name: Commit PDFs back to repo
if: steps.changed.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"
git add pdf/*.pdf
git diff --cached --quiet || git commit -m "CI: rebuild PDF(s) [skip ci]"
git push origin HEAD:${{ github.ref_name }}