Hugo Deploy GitHub Pages
ActionsTags
(1)This GitHub action will build your Hugo site, and then publish back to GitHub Pages.
TOKEN
: A GitHub access token that can push to other repos, which in this case will be your GitHub pages repo. We cannot useGITHUB_TOKEN
as defined here because it is a locally scoped token to a specific repo.
CNAME
: Contents of aCNAME
file.GITHUB_ACTOR
: The name of the person or app that initiated the workflow. For example, octocat. See here.GO_VERSION
: The version of Go you may want to install. This is not required for basic operation. Values should be in the format of1.17
.HUGO_ARGS
: Arguments passed tohugo
.HUGO_EXTENDED
: If set totrue
, the extended version of Hugo will be used. Default isfalse
.HUGO_PUBLISH_DIR
: Specify if you do not use the Hugo default ofpublic
.HUGO_VERSION
: This allows you to control which version of Hugo you want to use. The default is to pull the latest version.TARGET_BRANCH
: This is the branch to push the public files e.g.docs
. Default ismain
branch.TARGET_REPO
: This is the repo slug for the GitHub pages site. e.g.benmatselby/benmatselby.github.io
.
name: Push to GitHub Pages on push to main
on:
push:
branches:
- main
jobs:
build:
name: Deploy
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v1
- name: Deploy the site
uses: benmatselby/hugo-deploy-gh-pages@main
env:
HUGO_VERSION: 0.88.0
TARGET_REPO: benmatselby/benmatselby.github.io
TARGET_BRANCH: main
TOKEN: ${{ secrets.TOKEN }}
HUGO_ARGS: '-t academic'
CNAME: benmatselby.github.io
This will:
- Clone the
TARGET_REPO
into thebuild
folder. - Commit the changes with the
date
as the git commit message. - Push back to GitHub using the
TARGET_BRANCH
environment variable.
To test this action locally, you can run the following in your hugo site:
Build the docker image
docker build --pull --rm -f "Dockerfile" -t hugodeployghpages:latest .
Run the standard version of Hugo and the action.
# cd to your hugo site
docker run --rm \
-eGITHUB_TOKEN \
-eGITHUB_ACTOR \
-eTARGET_REPO=benmatselby/benmatselby.github.io \
-v "$(pwd)":/site/ \
--workdir /site \
hugodeployghpages
Run the extended version of Hugo, and the action.
# cd to your hugo site
docker run --rm \
-eHUGO_EXTENDED=true \
-eGITHUB_TOKEN \
-eGITHUB_ACTOR \
-eTARGET_REPO=benmatselby/benmatselby.github.io \
-v "$(pwd)":/site/ \
--workdir /site \
hugodeployghpages
For an in depth tutorial, see this blog post. It is geared mostly at users of the Hugo Academic theme, but should be more broadly applicable.
Hugo Deploy GitHub Pages is not certified by GitHub. It is provided by a third-party and is governed by separate terms of service, privacy policy, and support documentation.