Files
SharedLaTeX/.gitea/workflows/build-xelatex.yml
T
Domipoke 6e89adcc51 jp font
2026-07-27 17:44:00 +02:00

67 lines
2.6 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
# # 1. Restore the font and TeX cache from previous runs
# - name: Cache TeX and Fontconfig
# uses: actions/cache@v3
# with:
# path: .texcache
# key: texlive-fonts-${{ runner.os }}
- 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
# 2. Tell the container to use the cached workspace folders
env:
TEXMFVAR: ${{ github.workspace }}/.texcache/texmf-var
XDG_CACHE_HOME: ${{ github.workspace }}/.texcache/xdg
with:
entrypoint: sh
args: >-
-c "mkdir -p pdf aux .texcache/texmf-var .texcache/xdg && 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"
# Ignore the .texcache folder so it doesn't get committed
git add pdf/*.pdf
git diff --cached --quiet || git commit -m "CI: rebuild all PDFs [skip ci]"
git push origin HEAD:refs/heads/"$BRANCH"