Skip to content

Build and Deploy

Build and Deploy #82

name: Build and Deploy
on:
push:
branches: main
pull_request:
branches: main
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write
# Allow one concurrent deployment
concurrency:
group: "pages"
cancel-in-progress: true
env:
REGEX_INCLUDE: "\\.(pdf|link|txt|sh)$"
jobs:
build:
name: Build pdfs out of tex,md and various doc files
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
with:
fetch-depth: 1
- name: Install tex
run: |
sudo apt update
sudo apt install texlive-latex-extra texlive-lang-italian texlive-lang-english texlive-fonts-recommended texlive-bibtex-extra texlive-science texlive-xetex
- name: Install format conversion tools
run: |
sudo apt install libreoffice
wget https://github.com/jgm/pandoc/releases/download/2.18/pandoc-2.18-linux-amd64.tar.gz -O /tmp/pandoc.tar.gz
tar xfz /tmp/pandoc.tar.gz -C /tmp
sudo mv /tmp/pandoc-*/bin/* /usr/bin
- name: Recursively compile tex files
run: ./.github/workflows/rec "*\.tex$" "xelatex -pdf"
- name: Recursively compile (doc|ppt)x? files
run: ./.github/workflows/rec "*\.(doc|ppt)x?$" "libreoffice --headless --convert-to pdf --outdir ."
- name: Recursively compile md files
run: ./.github/workflows/rec "*\.md$" ${GITHUB_WORKSPACE}/.github/workflows/md2pdf
- name: Generate build artifact
uses: actions/upload-artifact@v2
with:
name: build-result
path: .
statik:
name: Generate the static listing
runs-on: ubuntu-latest
needs: build
steps:
- name: Download compiled files
uses: actions/download-artifact@v2
with:
name: build-result
- name: Install go
uses: actions/setup-go@v3
with:
go-version: ">=1.18.0"
- name: Install statik
run: go install github.com/lucat1/statik@latest
- name: Update packages and install rsync
run: sudo apt install rsync
- name: Generate static directory listing
run: $(go env GOPATH)/bin/statik -page .github/workflows/page.gohtml -l -b "https://${{ github.event.repository.owner.name }}.github.io/${{ github.event.repository.name }}/" -i "$REGEX_INCLUDE" site
- name: Generate site artifact
if: github.ref == 'refs/heads/main'
uses: actions/upload-artifact@v2
with:
name: statik-build
path: ./site
deploy:
name: Deploy to Github Pages
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: statik
if: github.ref == 'refs/heads/main'
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Download static site artifact
uses: actions/download-artifact@v2
with:
name: statik-build
path: site
- name: Setup Pages
uses: actions/configure-pages@v1
- name: Upload artifact
uses: actions/upload-pages-artifact@v1
with:
path: site
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@main