fix: explicitly specify font sources and clear fonts dir before install #32
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Compile Latex and Release PDF | |
| on: | |
| push: | |
| tags: | |
| - 'v*' | |
| branches: | |
| - '*' | |
| jobs: | |
| workflow-setup: | |
| name: Workflow Setup | |
| runs-on: ubuntu-24.04 | |
| outputs: | |
| runner: ${{ steps.texlive_runner.outputs.runner }} | |
| prefix: ${{ steps.doc_prefix.outputs.prefix }} | |
| prefixwithref: ${{ steps.doc_prefix.outputs.prefixwithref }} | |
| pdf: ${{ steps.doc_prefix.outputs.pdf }} | |
| tex: ${{ steps.doc_prefix.outputs.tex }} | |
| steps: | |
| - name: Get TeXLive Runner | |
| id: texlive_runner | |
| run: | | |
| if ! [ -z "$GH_TOKEN" ]; then | |
| runners=$(gh api -H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28" /orgs/${{ github.repository_owner }}/actions/runners) | |
| texlive=$(echo $runners | jq --arg label "self-texlive" '[.runners[] | any(.labels[]; .name == $label) and .status == "online"] | any') | |
| if [ "$texlive" = "false" ]; then | |
| echo "runner=ubuntu-latest" >> "$GITHUB_OUTPUT" | |
| else | |
| echo "runner=self-texlive" >> "$GITHUB_OUTPUT" | |
| fi | |
| else | |
| echo "runner=ubuntu-latest" >> "$GITHUB_OUTPUT" | |
| fi | |
| env: | |
| GH_TOKEN: ${{ secrets.TOKEN_RUNNER }} | |
| - name: Get Document Prefix | |
| id: doc_prefix | |
| run: | | |
| prefix=$(echo "${{ github.repository }}" | cut -d'/' -f2) | |
| echo "prefix=$prefix" >> "$GITHUB_OUTPUT" | |
| prefixwithref=$(echo "$prefix")-${{ github.ref_name }} | |
| echo "prefixwithref=$prefixwithref" >> "$GITHUB_OUTPUT" | |
| echo "pdf=$prefixwithref.pdf" >> "$GITHUB_OUTPUT" | |
| echo "tex=$prefix.tex" >> "$GITHUB_OUTPUT" | |
| - name: Show Outputs | |
| run: | | |
| echo "runner=${{ steps.texlive_runner.outputs.runner }}" | |
| echo "prefix=${{ steps.doc_prefix.outputs.prefix }}" | |
| echo "prefixwithref=${{ steps.doc_prefix.outputs.prefixwithref }}" | |
| echo "pdf=${{ steps.doc_prefix.outputs.pdf }}" | |
| echo "tex=${{ steps.doc_prefix.outputs.tex }}" | |
| build_latex: | |
| needs: workflow-setup | |
| runs-on: ${{ needs.workflow-setup.outputs.runner }} | |
| name: Build LaTeX Artifact | |
| env: | |
| VERSION: ${{ github.ref_name }} | |
| steps: | |
| - name: Set up Git repository | |
| uses: actions/checkout@v4 | |
| with: | |
| clean: true | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.11' | |
| - name: Install article-cli | |
| run: | | |
| pip install --no-cache-dir 'article-cli>=1.3.2' | |
| - name: Setup git hooks | |
| run: | | |
| article-cli setup | |
| - name: Install fonts | |
| run: | | |
| # Clear any stale cached fonts from previous runs | |
| rm -rf fonts | |
| article-cli install-fonts | |
| - name: Compile LaTeX document (ubuntu-latest) | |
| uses: xu-cheng/latex-action@v3 | |
| if: ${{ needs.workflow-setup.outputs.runner == 'ubuntu-latest' }} | |
| with: | |
| root_file: ${{ needs.workflow-setup.outputs.tex }} | |
| latexmk_shell_escape: true | |
| latexmk_use_xelatex: true | |
| post_compile: "latexmk -c; rm -rf _minted*" | |
| - name: Compile LaTeX document (self-hosted) | |
| if: ${{ needs.workflow-setup.outputs.runner == 'self-texlive' }} | |
| run: | | |
| article-cli compile ${{ needs.workflow-setup.outputs.tex }} --engine xelatex --shell-escape | |
| - name: Compile Poster (ubuntu-latest) | |
| uses: xu-cheng/latex-action@v3 | |
| if: ${{ needs.workflow-setup.outputs.runner == 'ubuntu-latest' }} | |
| with: | |
| root_file: poster.template.tex | |
| latexmk_shell_escape: true | |
| latexmk_use_xelatex: true | |
| post_compile: "latexmk -c; rm -rf _minted*" | |
| - name: Compile Poster (self-hosted) | |
| if: ${{ needs.workflow-setup.outputs.runner == 'self-texlive' }} | |
| run: | | |
| article-cli compile poster.template.tex --engine xelatex --shell-escape | |
| - name: Rename PDF | |
| run: mv ${{ needs.workflow-setup.outputs.prefix }}.pdf ${{ needs.workflow-setup.outputs.pdf }} | |
| - name: Upload Artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ needs.workflow-setup.outputs.prefixwithref }} | |
| path: | | |
| ./*.tex | |
| ./*.bib | |
| ./*.gin | |
| ./*.bbl | |
| ./${{ needs.workflow-setup.outputs.pdf }} | |
| ./poster.template.pdf | |
| ./README.md | |
| ./hooks* | |
| ./img* | |
| ./fonts/* | |
| ./dat* | |
| ./*.png | |
| ./*.sty | |
| ./exclude.txt | |
| ./sections* | |
| ./litterature* | |
| ./images* | |
| ./pyproject.toml | |
| !./.git* | |
| !./.github* | |
| !./.vscode* | |
| !./.idea* | |
| !./.DS_Store* | |
| !./.gitignore* | |
| check: | |
| needs: [build_latex, workflow-setup] | |
| runs-on: ${{ needs.workflow-setup.outputs.runner }} | |
| name: Check LaTeX Artifact | |
| steps: | |
| - name: Download Artifact | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: ${{ needs.workflow-setup.outputs.prefixwithref }} | |
| path: ${{ github.workspace }}/artifact | |
| - name: List Artifact | |
| run: ls -R ${{ github.workspace }} | |
| - name: Check compilation (ubuntu-latest) | |
| if: ${{ needs.workflow-setup.outputs.runner == 'ubuntu-latest' }} | |
| uses: xu-cheng/latex-action@v3 | |
| with: | |
| root_file: ${{ needs.workflow-setup.outputs.tex }} | |
| latexmk_shell_escape: true | |
| latexmk_use_xelatex: true | |
| post_compile: "latexmk -c; rm -rf _minted*" | |
| working_directory: ${{ github.workspace }}/artifact | |
| - name: Set up Python (self-hosted) | |
| if: ${{ needs.workflow-setup.outputs.runner == 'self-texlive' }} | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.11' | |
| - name: Install article-cli (self-hosted) | |
| if: ${{ needs.workflow-setup.outputs.runner == 'self-texlive' }} | |
| run: | | |
| pip install --no-cache-dir article-cli>=1.3.1 | |
| - name: Check compilation (self-hosted) | |
| if: ${{ needs.workflow-setup.outputs.runner == 'self-texlive' }} | |
| run: | | |
| article-cli compile ${{ needs.workflow-setup.outputs.tex }} --engine xelatex --shell-escape | |
| working-directory: ${{ github.workspace }}/artifact | |
| - name: Check poster compilation (self-hosted) | |
| if: ${{ needs.workflow-setup.outputs.runner == 'self-texlive' }} | |
| run: | | |
| article-cli compile poster.template.tex --engine xelatex --shell-escape | |
| working-directory: ${{ github.workspace }}/artifact | |
| release: | |
| needs: [workflow-setup, build_latex, check] | |
| runs-on: ${{ needs.workflow-setup.outputs.runner }} | |
| name: Create Release | |
| if: startsWith(github.ref, 'refs/tags/v') | |
| steps: | |
| - name: Download Artifact | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: ${{ needs.workflow-setup.outputs.prefixwithref }} | |
| path: ${{ github.workspace }}/artifact | |
| - name: Archive Article | |
| run: | | |
| temp_dir=$(mktemp -d) | |
| tar -czvf "${temp_dir}/${{ needs.workflow-setup.outputs.prefixwithref }}.tar.gz" -C artifact ./ | |
| mv "${temp_dir}/${{ needs.workflow-setup.outputs.prefixwithref }}.tar.gz" ./ | |
| rm -rf "$temp_dir" | |
| - name: Create Release | |
| id: create_release | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| draft: false | |
| prerelease: ${{ contains(github.ref, 'alpha') || contains(github.ref, 'beta') || contains(github.ref, 'rc') || contains(github.ref, 'preview') }} | |
| name: Release ${{ github.ref_name }} | |
| generate_release_notes: true | |
| tag_name: ${{ github.ref }} | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| files: | | |
| artifact/${{ needs.workflow-setup.outputs.prefixwithref }}.pdf | |
| artifact/poster.template.pdf | |
| ${{ needs.workflow-setup.outputs.prefixwithref }}.tar.gz |