GitHub Actions for Hugo ️ Setup Hugo quickly and build your site fast. Hugo extended, Hugo Modules, Linux (Ubuntu), macOS, and Windows are supported. https://github.com/marketplace/actions/hugo-setup
Go to file
peaceiris 8b813b0c62 deps: update 2019-11-28 00:11:39 +09:00
.dependabot deps: Add dependabot config 2019-10-23 20:01:55 +09:00
.github Update test.yml (#96) 2019-11-27 22:05:49 +09:00
.vscode Feat: Support macOS and Windows, migrate JavaScript to TypeScript (#32) 2019-09-21 10:41:21 +09:00
__tests__ Feat: Support macOS and Windows, migrate JavaScript to TypeScript (#32) 2019-09-21 10:41:21 +09:00
images [ImgBot] Optimize images (#56) 2019-10-08 14:01:01 +09:00
lib Path join (#92) 2019-11-22 11:14:44 +09:00
src Path join (#92) 2019-11-22 11:14:44 +09:00
.editorconfig Feat: Support macOS and Windows, migrate JavaScript to TypeScript (#32) 2019-09-21 10:41:21 +09:00
.envrc chore: delete line 2019-10-09 11:49:24 +09:00
.eslintrc.json Feat: Support macOS and Windows, migrate JavaScript to TypeScript (#32) 2019-09-21 10:41:21 +09:00
.gitignore deps: Compile deps into single file with ncc (#88) 2019-11-17 20:39:17 +09:00
.nvmrc deps: upgrade node to 12.13.0 (#86) 2019-11-13 17:29:31 +09:00
.prettierrc.json Feat: Support macOS and Windows, migrate JavaScript to TypeScript (#32) 2019-09-21 10:41:21 +09:00
LICENSE add: action 2019-05-22 05:57:34 +09:00
README.md docs: Update tag 2019-11-22 12:22:33 +09:00
action.yml github: Update action meta 2019-10-29 10:03:36 +09:00
jest.config.js Feat: Support macOS and Windows, migrate JavaScript to TypeScript (#32) 2019-09-21 10:41:21 +09:00
package-lock.json deps: update 2019-11-28 00:11:39 +09:00
package.json deps: update 2019-11-28 00:11:39 +09:00
tsconfig.json config: enhance tsconfig.json (#44) 2019-09-23 10:58:19 +09:00

README.md

license release GitHub release date GitHub Actions status CodeFactor

GitHub Actions for Hugo

GitHub Actions for Hugo

We can run Hugo on a virtual machine of GitHub Actions by this Hugo action. Hugo extended version and Hugo Modules are supported.

From v2.0.0, this Hugo action 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 less than 4 sec. (A docker base action was taking about 1 min or more execution time to build or pull.)

OS (runs-on) ubuntu-18.04 macos-latest windows-2019
Support
Hugo type Hugo Extended Hugo Modules Latest Hugo
Support

Table of Contents

Getting started

Create your workflow

An example workflow .github/workflows/gh-pages.yml with GitHub Actions for GitHub Pages

peaceiris/actions-gh-pages - GitHub

peaceiris/actions-hugo latest version peaceiris/actions-gh-pages latest version

name: github pages

on:
  push:
    branches:
    - master

jobs:
  build-deploy:
    runs-on: ubuntu-18.04
    steps:
    - uses: actions/checkout@master
      # with:
      #   submodules: true

    - name: Setup Hugo
      uses: peaceiris/actions-hugo@v2.3.0
      with:
        hugo-version: '0.59.1'
        # extended: true

    - name: Build
      run: hugo --minify

    - name: Deploy
      uses: peaceiris/actions-gh-pages@v2.5.0
      env:
        ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
        PUBLISH_BRANCH: gh-pages
        PUBLISH_DIR: ./public

Options

Use Hugo extended

Set extended: true to use a Hugo extended version.

- name: Setup Hugo
  uses: peaceiris/actions-hugo@v2.3.0
  with:
    hugo-version: '0.59.1'
    extended: true

Use the latest version of Hugo

Set hugo-version: 'latest' to use the latest version of Hugo.

- name: Setup Hugo
  uses: peaceiris/actions-hugo@v2.3.0
  with:
    hugo-version: 'latest'

This action fetches the latest version of Hugo by hugo | Homebrew Formulae

Tips

Read Hugo version from file

How to sync a Hugo version between Docker Compose YAML file and a GitHub Actions workflow using .env file.

Write a HUGO_VERSION to the .env file like the following and push it to a remote branch.

HUGO_VERSION=0.59.1

Next, add a step to read a Hugo version from the .env file.

    - name: Read .env
      id: hugo-version
      run: |
        . ./.env
        echo "::set-output name=HUGO_VERSION::${HUGO_VERSION}"        

    - name: Setup Hugo
      uses: peaceiris/actions-hugo@v2.3.0
      with:
        hugo-version: '${{ steps.hugo-version.outputs.HUGO_VERSION }}'
        extended: true

Here is a docker-compose.yml example.

version: '3'

services:
  hugo:
    container_name: hugo
    image: "peaceiris/hugo:v${HUGO_VERSION}"
    # image: peaceiris/hugo:v${HUGO_VERSION}-mod  # Hugo Modules
    ports:
      - 1313:1313
    volumes:
      - ${PWD}:/src
    command:
      - server
      - --bind=0.0.0.0
      - --buildDrafts

License

About the author