Files
SharedLaTeX/.gitea/workflows/build-pdf.yml
T
Domipoke 174f417812 runs-on
2026-07-26 19:59:39 +02:00

63 lines
2.1 KiB
YAML

name: Build LaTeX PDF
on:
push:
paths:
- '**/*.tex'
jobs:
build:
runs-on: ubuntu-latest
container:
image: texlive/texlive:latest
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 != ''
run: |
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"
done
# keep pdf/ containing only pdfs
find pdf -type f ! -name '*.pdf' -delete
- name: Upload built PDFs
if: steps.changed.outputs.roots != ''
uses: actions/upload-artifact@v4
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 }}