@@ -0,0 +1,63 @@
|
||||
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
|
||||
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 }}
|
||||
Reference in New Issue
Block a user