Skip to content

Hugo - Publish to GitHub Pages #5

Hugo - Publish to GitHub Pages

Hugo - Publish to GitHub Pages #5

name: Hugo - Publish to GitHub Pages
# Original source: htts://github.com/boochtek/hugo-publish-github-pages
# Original author: Craig Buchek (@booch) with help from ChatGPT
on:
# Run on pushes to the `main` branch.
push:
branches:
- main
- master
# Allow running this workflow manually from the Actions tab.
workflow_dispatch:
# Set permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages.
permissions:
contents: read
pages: write
id-token: write
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: "pages"
cancel-in-progress: false
defaults:
run:
shell: bash
jobs:
hugo-build:
runs-on: ubuntu-latest
steps:
- name: Install Hugo CLI
run: |
HUGO_LATEST_RELEASE_JSON=$(curl -s https://api.github.com/repos/gohugoio/hugo/releases/latest)
HUGO_VERSION=$(echo $HUGO_LATEST_RELEASE_JSON | tr -cd '[:print:]' | jq -r '.tag_name' | cut -c2-)
HUGO_DEB_URL="https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb"
wget -O "${{ runner.temp }}/hugo.deb" "$HUGO_DEB_URL" \
&& sudo dpkg -i ${{ runner.temp }}/hugo.deb
# - name: Install Dart Sass
# run: sudo snap install dart-sass
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 0
- name: Setup Pages
id: pages
uses: actions/configure-pages@v3
- name: Install Node.js dependencies
run: "[[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true"
- name: Build with Hugo
env:
# For maximum backward compatibility with Hugo modules
HUGO_ENVIRONMENT: production
HUGO_ENV: production
run: |
hugo --gc --minify
- name: Upload artifact
uses: actions/upload-pages-artifact@v2
with:
path: ./public
hugo-deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: hugo-build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v2