Skip to content

Build & deploy Manual to GitHub Pages #60

Build & deploy Manual to GitHub Pages

Build & deploy Manual to GitHub Pages #60

name: Build & deploy Manual to GitHub Pages
on:
workflow_dispatch:
push:
branches:
- main
env:
nf-archives: SpaceMono,UbuntuSans
nf-version: v3.2.1
nf-default: UbuntuSans
jobs:
## Clear artifact as necessary
# TODO: move into end of build job?
nf-clear-artifact:
name: Clear NerdFonts artifact
runs-on: ubuntu-latest
steps:
- name: Clear artifact
run: echo "Clearing nf-web artifact in case it exists from previous run"
- uses: geekyeggo/delete-artifact@v5
with:
name: nf-web
## Generate NerdFont fonts matrix ##
nf-generate-matrix:
name: Generate NerdFont matrix
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.nf-gen-matrix.outputs.archive-matrix }}
steps:
- name: Set matrix
id: nf-gen-matrix
run: |
ARCHIVE_ARRAY=(${nf-archives//,/ })
# DEBUG PRINT SPLIT ARRAY
echo $ARCHIVE_ARRAY
VERSIONS_JSON=$(printf '%s\n' "${VERSIONS_ARRAY[@]}" | jq -R . | jq -s .)
# DEBUG PRINT JSON FORM
echo $VERSIONS_JSON
echo "::set-output name=archive-matrix::${VERSIONS_JSON}"
#echo "::set-output name=matrix::$(echo ${{env.nf-archive}} | tr ',' '\n' | xargs -I % echo %-${{env.nf-version}})"
## Fetch/process/cache fonts ##
get_fonts:
name: Fetch & Process NerdFonts
needs:
- nf-clear-artifact
- nf-generate-matrix
runs-on: ubuntu-latest
strategy:
matrix:
archive: ${{ fromJSON(needs.nf-generate-matrix.outputs.matrix) }}
steps:
- name: debug output matrix.archive
run: |
echo " -- Matrix archive:"
echo ${{ matrix.archive }}
- uses: actions/download-artifact@v4
with:
name: nf-web
path: docs/assets/fonts/
- name: debug output download-artoifact
run: |
echo " -- Downloaded artifact contents:"
ls -R
- uses: actions/cache@v4
id: cache
with:
font-path: data/fonts/${{ env.nf-archives }}NerdFont
path: |

Check failure on line 79 in .github/workflows/build-and-deploy-manual.yml

View workflow run for this annotation

GitHub Actions / Build & deploy Manual to GitHub Pages

Invalid workflow file

The workflow is not valid. .github/workflows/build-and-deploy-manual.yml (Line: 79, Col: 17): Unexpected symbol: 'docs/assets/fonts/default-font'. Located at position 37 within expression: matrix.archive == env.nf-default && docs/assets/fonts/default-font.css || '/dev/null' .github/workflows/build-and-deploy-manual.yml (Line: 108, Col: 14): Unexpected symbol: '--gen-default'. Located at position 37 within expression: env.nf-archive == matrix.archive && --gen-default || ''
# docs/assets/fonts/${{env.font}}NerdFont
"data/assets/fonts/${{ matrix.archives }}NerdFont"
${{ matrix.archive == env.nf-default && docs/assets/fonts/default-font.css || '/dev/null' }}
key: "${{ env.nf-archives }}-${{ env.version }}"
- name: Checkout processing script
if: steps.cache.outputs.cache-hit != 'true'
uses: actions/checkout@v4
with:
sparse-checkout: |
nerdfontweb.py
docs/assets/fonts/
- name: Setup Python
if: steps.cache.outputs.cache-hit != 'true'
uses: actions/[email protected]
with:
python-version: '3.12'
cache: 'pip'
- name: Download, unpack, and process NerdFonts
if: steps.cache.outputs.cache-hit != 'true'
id: process_fonts
#with:
#env:
#archive: ${{ matrix.archive }} == ${{ env.nf-default }} && '--gen-default' || '' }}
#env:
# ${{ if eq(archive, env.nf-default) }}:font: default
run: |
python nerdfontweb.py --version ${{ env.nf-version}} ${{ env.nf-archive == matrix.archive && --gen-default || '' }} --mkdocs ${{ matrix.archive }}
# DEBUG PRINT
echo " -- Downloaded and processed NerdFonts:"
ls -R
- uses: actions/upload-artifact@v4
with:
name: nf-web
path: docs/assets/fonts/
retention-days: 1
## Compile SASS ##
compile_sass:
name: Compile SASS
runs-on: ubuntu-latest
steps:
- name: Checkout SASS files
uses: actions/checkout@v4
with:
sparse-checkout: |
docs/assets/stylesheets/
- name: Install sassc
run: sudo apt-get install -y sassc
- name: Compile SASS
run: |
for file in docs/assets/stylesheets/*.sass; do
sassc --sass $file ${file%.sass}.compiled.css
done
- name: Upload compiled CSS
uses: actions/upload-artifact@v4
with:
name: compiled-css
path: docs/assets/stylesheets/*.compiled.css
retention-days: 1
## Build job ##
build:
name: Build manual pages
needs:
- get_fonts
- compile_sass
runs-on: ubuntu-latest
steps:
- name: Configure GitHub Pages
uses: actions/configure-pages@v5
- name: Checkout main
uses: actions/checkout@v4
with:
sparse-checkout: |
.github
docs
#- uses: actions/cache/restore@v4
# with:
# path: |
# docs/assets/fonts/${{env.font}}NerdFont
# docs/assets/fonts/default-font.css
# key: "${{env.font}}-${{env.version}}"
# fail-on-cache-miss: true
- uses: actions/download-artifact@v4
with:
name: nf-web
path: docs/assets/fonts/
- name: debug output download-artifact for build
run: |
echo " -- Downloaded artifact contents:"
ls -R
- uses: actions/download-artifact@v4
with:
name: compiled-css
path: docs/assets/stylesheets/
- name: Setup Python
uses: actions/[email protected]
with:
python-version: '3.12'
cache: 'pip'
- name: Install python modules
run: pip install -r docs/requirements.txt
- name: Generate site files
run: mkdocs build
- name: Upload GitHub Pages artifact
uses: actions/[email protected]
with:
path: "site/"
## Deploy job ##
deploy:
name: Deploy manual pages
needs: build
# Grant GITHUB_TOKEN the permissions required to make a Pages deployment
permissions:
pages: write # to deploy to Pages
id-token: write # to verify the deployment originates from an appropriate source
# Deploy to the github-pages environment
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
# Specify runner + deployment step
runs-on: ubuntu-latest
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/[email protected]