Skip to content

Build & deploy Manual to GitHub Pages #74

Build & deploy Manual to GitHub Pages

Build & deploy Manual to GitHub Pages #74

name: Build & deploy Manual to GitHub Pages
on:
workflow_dispatch:
push:
branches:
- main
env:
#nf-archives: SpaceMono,UbuntuSans
nf-archives: '["UbuntuSans", "SpaceMono"]'
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: |
# #"IFS=',' read -r -a ARCHIVES_ARRAY <<< ${{ env.nf-archives }}"
# #ARCHIVES_ARRAY="${{ env.nf-archives }}//,/ }}"
# # DEBUG PRINT SPLIT ARRAY
# echo " -- ARCHIVES_ARRAY:"
# #echo ${ARCHIVES_ARRAY[0]}
# #echo ${ARCHIVES_ARRAY[1]}
# ARCHIVES_ARRAY=(${{ env.nf-archives }}//,/ })
# echo ${ARCHIVES_ARRAY[0]}
# echo ${ARCHIVES_ARRAY[1]}
# #ARCHIVES_JSON=$(printf '%s\n' "${ARCHIVES_ARRAY[@]}" | jq -R . | jq -s .)
# ARCHIVES_JSON=$ARCHIVES_ARRAY | jq -R . | jq -s .)
# # DEBUG PRINT JSON FORM
# echo " -- ARCHIVES_JSON:"
# echo $ARCHIVES_JSON
# echo matrix=$ARCHIVES_JSON >> $GITHUB_OUTPUT
# #echo "::set-output name=archive-matrix::${ACHIVES_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(${{ env.nf-archive }}) }}

Check failure on line 73 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: 73, Col: 18): Unexpected symbol: '${{'. Located at position 10 within expression: fromJSON(${{ env.nf-archive .github/workflows/build-and-deploy-manual.yml (Line: 73, Col: 18): Unexpected value '${{ fromJSON(${{ env.nf-archive }}) }}'
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-artifact
run: |
echo " -- Downloaded artifact contents:"
ls -R
- uses: actions/cache@v4
id: cache
with:
font-path: data/fonts/${{ env.nf-archives }}NerdFont
path: |
"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: |
default="${{ env.nf-archive == matrix.archive && '--gen-default' || '' }}"
python nerdfontweb.py --version ${{ env.nf-version}} ${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]