up workflow #2
Workflow file for this run
This file contains 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/feelpp/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: Install hooks | |
run: | | |
bash ./a.cli setup | |
- name: Compile LaTeX document | |
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 | |
post_compile: "latexmk -c; rm -rf _minted*" | |
- name: Compile LaTeX document | |
if: ${{ needs.workflow-setup.outputs.runner == 'self-texlive' }} | |
run: | | |
latexmk -shell-escape -pdf -file-line-error -halt-on-error -interaction=nonstopmode ${{ needs.workflow-setup.outputs.tex }} | |
- 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 }} | |
./README.adoc | |
./hooks* | |
./img* | |
./dat* | |
./*.png | |
./a.cli | |
./*.sty | |
./exclude.txt | |
./sections* | |
./litterature* | |
./graphics* | |
!./.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 of LaTeX document from artifact | |
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 | |
post_compile: "latexmk -c; rm -rf _minted*" | |
working_directory: ${{ github.workspace }}/artifact | |
- | |
name: Check compilation of LaTeX document from artifact | |
if: ${{ needs.workflow-setup.outputs.runner == 'self-texlive' }} | |
run: | | |
latexmk -shell-escape -pdf -file-line-error -halt-on-error -interaction=nonstopmode ${{ needs.workflow-setup.outputs.tex }} | |
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 | |
${{ needs.workflow-setup.outputs.prefixwithref }}.tar.gz |