name: Compile LaTeX Documents on: push: branches: [ main ] pull_request: branches: [ main ] permissions: contents: write packages: read jobs: build-public: runs-on: ubuntu-latest container: ghcr.io/xu-cheng/texlive-alpine:latest steps: - name: Install system dependencies run: apk add --no-cache git gettext bash nodejs poppler-utils - uses: actions/checkout@v4 - name: Create public info file env: PERSONAL_NAME: ${{ secrets.PERSONAL_NAME || github.repository_owner }} PERSONAL_EMAIL: ${{ secrets.PERSONAL_EMAIL || '' }} PERSONAL_WEBSITE: ${{ secrets.PERSONAL_WEBSITE || '' }} PERSONAL_SCHOOL_EMAIL: ${{ secrets.PERSONAL_SCHOOL_EMAIL || '' }} run: | cat > personal_info.tex << 'EOL' \newcommand{\personalName}{$PERSONAL_NAME} \newcommand{\personalEmail}{$PERSONAL_EMAIL} \newcommand{\personalPhone}{~} \newcommand{\personalWebsite}{$PERSONAL_WEBSITE} \newcommand{\personalSchoolEmail}{$PERSONAL_SCHOOL_EMAIL} \newcommand{\personalHomeAddressLineOne}{~} \newcommand{\personalHomeAddressLineTwo}{~} \newcommand{\personalSchoolAddressLineOne}{~} \newcommand{\personalSchoolAddressLineTwo}{~} \newcommand{\personalSchoolAddressLineThree}{~} EOL envsubst < personal_info.tex > personal_info.tex.tmp mv personal_info.tex.tmp personal_info.tex - name: Compile LaTeX run: | latexmk -pdf -file-line-error -halt-on-error -interaction=nonstopmode resume.tex latexmk -pdf -file-line-error -halt-on-error -interaction=nonstopmode cv.tex - name: Enforce one-page resume run: | pages=$(pdfinfo resume.pdf | awk '/^Pages:/ {print $2}') echo "Resume pages: $pages" test "$pages" -eq 1 - name: Upload Public PDFs as Release uses: ncipollo/release-action@v1 with: artifacts: "resume.pdf,cv.pdf" tag: latest name: Latest PDFs body: | Latest compiled resume and CV (public versions) Built from commit ${{ github.sha }} token: ${{ secrets.GITHUB_TOKEN }} allowUpdates: true removeArtifacts: true replacesArtifacts: true