Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork93
GitHub Actions for Hugo ⚡️ Setup Hugo quickly and build your site fast. Hugo extended, Hugo Modules, Linux (Ubuntu), macOS, and Windows are supported.
License
peaceiris/actions-hugo
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
ThisHugo Setup Action can installHugo to a virtual machine ofGitHub Actions.Hugo extended version,Hugo Modules, Linux (Ubuntu), macOS, and Windows are supported.
Fromv2, this Hugo Setup Action has migrated to a JavaScript (TypeScript) action.We no longer build or pull a Hugo docker image.Thanks to this change, we can complete this action in less than a few seconds.(A docker base action was taking about 1 min or more execution time to build and pull a docker image.)
| OS (runs-on) | ubuntu-latest, ubuntu-20.04, ubuntu-22.04 | macos-latest | windows-2019 |
|---|---|---|---|
| Support | ✅️ | ✅️ | ✅️ |
| Hugo type | Hugo Extended | Hugo Modules | Latest Hugo |
|---|---|---|---|
| Support | ✅️ | ✅️ | ✅️ |
An example workflow.github/workflows/gh-pages.yml withGitHub Actions for GitHub Pages.For the first deployment, we have to do this operation:First Deployment withGITHUB_TOKEN - peaceiris/actions-gh-pages
name:GitHub Pageson:push:branches: -main# Set a branch to deploypull_request:jobs:deploy:runs-on:ubuntu-22.04concurrency:group:${{ github.workflow }}-${{ github.ref }}steps: -uses:actions/checkout@v4with:submodules:true# Fetch Hugo themes (true OR recursive)fetch-depth:0# Fetch all history for .GitInfo and .Lastmod -name:Setup Hugouses:peaceiris/actions-hugo@v3with:hugo-version:'0.119.0'# extended: true -name:Buildrun:hugo --minify -name:Deployuses:peaceiris/actions-gh-pages@v3if:github.ref == 'refs/heads/main'with:github_token:${{ secrets.GITHUB_TOKEN }}publish_dir:./public
Setextended: true to use a Hugo extended version.
-name:Setup Hugouses:peaceiris/actions-hugo@v3with:hugo-version:'0.119.0'extended:true
Sethugo-version: 'latest' to use the latest version of Hugo.
-name:Setup Hugouses:peaceiris/actions-hugo@v3with:hugo-version:'latest'
This action fetches the latest version of Hugo byhugo | Homebrew Formulae
Insert a cache step before site-building as follows.
First, to maximize compatibility with all Hugo versions, let's define the variableHUGO_CACHEDIR:
# * ...jobs:deploy:runs-on:ubuntu-22.04env:HUGO_CACHEDIR:/tmp/hugo_cache# <- Define the env variable here, so that Hugo's cache dir is now predictible in your workflow and doesn't depend on the Hugo's version you're using.# * ...
Now, let's add the cache action call just above theBuild step:
-uses:actions/cache@v4with:path:${{ env.HUGO_CACHEDIR }}# <- Use the same env variable just right herekey:${{ runner.os }}-hugomod-${{ hashFiles('**/go.sum') }}restore-keys:| ${{ runner.os }}-hugomod--name:Buildrun:hugo --minify
How to sync a Hugo version between a Docker Compose and a GitHub Actions workflow via.env file.
Write aHUGO_VERSION to the.env file like the following and push it to a remote branch.
HUGO_VERSION=0.119.0
Next, add a step to read a Hugo version from the.env file.
-name:Read .envid:hugo-versionrun:| . ./.env echo "HUGO_VERSION=${HUGO_VERSION}" >> "${GITHUB_OUTPUT}" -name:Setup Hugouses:peaceiris/actions-hugo@v3with:hugo-version:'${{ steps.hugo-version.outputs.HUGO_VERSION }}'extended:true
Here is adocker-compose.yml example.
version:'3'services:hugo:container_name:hugoimage:"peaceiris/hugo:v${HUGO_VERSION}"# image: peaceiris/hugo:v${HUGO_VERSION}-mod # Hugo Modules# image: peaceiris/hugo:v${HUGO_VERSION}-full # Hugo Modules and Node.jsports: -1313:1313volumes: -${PWD}:/srccommand: -server ---bind=0.0.0.0 ---buildDrafts
The alpine base Hugo Docker image is provided on the following repository.
peaceiris/hugo-extended-docker: Hugo alpine base Docker image (Hugo extended and Hugo Modules)
Here is an example workflow for thegoogle/docsy Hugo theme.This theme needsautoprefixer andpostcss-cli to build a project.The following workflow is tested withgoogle/docsy-example.
A workflow for the Hugo Babel pipeline is also the same as follows.
name:GitHub Pageson:push:branches: -master# Set a branch to deploypull_request:jobs:deploy:runs-on:ubuntu-22.04concurrency:group:${{ github.workflow }}-${{ github.ref }}steps: -uses:actions/checkout@4with:fetch-depth:0# Fetch all history for .GitInfo and .Lastmod -name:Setup Hugouses:peaceiris/actions-hugo@v3with:hugo-version:'0.119.0'extended:true -uses:actions/setup-node@v4with:node-version:'20'cache:'npm'# The action defaults to search for the dependency file (package-lock.json,# npm-shrinkwrap.json or yarn.lock) in the repository root, and uses its# hash as a part of the cache key.# https://github.com/actions/setup-node/blob/main/docs/advanced-usage.md#caching-packages-datacache-dependency-path:'**/package-lock.json' -run:npm ci -run:hugo --minify -name:Deployuses:peaceiris/actions-gh-pages@v3if:github.ref == 'refs/heads/master'with:github_token:${{ secrets.GITHUB_TOKEN }}
Here is an example workflow for a Hugo project usingasciidoctor.
name:GitHub Pageson:push:branches: -main# Set a branch to deploypull_request:jobs:deploy:runs-on:ubuntu-22.04concurrency:group:${{ github.workflow }}-${{ github.ref }}steps: -uses:actions/checkout@v4with:submodules:true# Fetch Hugo themes (true OR recursive)fetch-depth:0# Fetch all history for .GitInfo and .Lastmod -name:Setup Hugouses:peaceiris/actions-hugo@v3with:hugo-version:'0.119.0'extended:true -name:Setup Rubyuses:ruby/setup-ruby@v1with:ruby-version:3.2 -run:gem install asciidoctor -name:Run Hugorun:| alias asciidoctor="asciidoctor --attribute=experimental=true --attribute=icons=font" hugo --minify -name:Deployuses:peaceiris/actions-gh-pages@v3if:github.ref == 'refs/heads/main'with:github_token:${{ secrets.GITHUB_TOKEN }}
cf.Gitinfo fails on unicode filename · Issue #3071 · gohugoio/hugo
name:GitHub Pageson:push:branches: -mainjobs:deploy:runs-on:ubuntu-22.04concurrency:group:${{ github.workflow }}-${{ github.ref }}steps: -uses:actions/checkout@v4with:fetch-depth:0 -name:Disable quotePathrun:git config core.quotePath false -name:Setup Hugouses:peaceiris/actions-hugo@v3with:hugo-version:'0.119.0'
Runnpm test on a Docker container.
# On containermake buildmake all# Release script on host./release.sh
About
GitHub Actions for Hugo ⚡️ Setup Hugo quickly and build your site fast. Hugo extended, Hugo Modules, Linux (Ubuntu), macOS, and Windows are supported.
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Sponsor this project
Uh oh!
There was an error while loading.Please reload this page.
Packages0
Uh oh!
There was an error while loading.Please reload this page.