Skip to content


Use this GitHub Action with your project

Add this Action to an existing workflow or create a new one.

View on Marketplace
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time
Image Credit: Peaceiris

Image Credit: Peaceiris

Build and Publish Your Hugo Site to GitHub Pages

gohugoio/hugo: The world’s fastest framework for building websites

πŸš€ License Release Release πŸš€


This action builds your Hugo Site (using the latest Hugo Extended) and pushes it to Github Pages.

This action also contains support for several external Hugo Helpers:

Name Support
reStructuredText ️ βœ”οΈ
Pandoc βœ”οΈ
Asciidoctor βœ”οΈ
PostCSS βœ”οΈ
Pygments βœ”οΈ
Babel βœ”οΈ
Hugo Modules βœ”οΈ

If your site requires the use of another external helper, submit an issue and I'll try to add it.

This action is based on the Docker Image from chabad360/hugo-actions. If you need to do post-build/pre-upload steps, use that action.

⭐ Getting started

This is a basic workflow.yml to get you started (for more information scroll down to ⭐ Inputs):

name: Publish Site

      - master

    runs-on: ubuntu-latest

      - name: Checkout Repo
        uses: actions/checkout@master
          submodules: true
      - name: Publish Site
        uses: chabad360/hugo-gh-pages@master
          githubToken: ${{ secrets.PERSONAL_TOKEN }}

⭐ Inputs

Key Description Required Default
githubToken A Github Personal Access Token with repo permissions. βœ”οΈ N/A
cname The custom domain name for your GH Pages Site. ❌ N/A
branch The branch to push the built site to. ❌ gh-pages
repo The repository to push the built site to. ❌ The current repo
hugoVersion The version Hugo to use (append extended_ to the begining to use the extended version). ❌ Latest Hugo Extended
args Arguments to pass to Hugo ❌ --gc --minify --cleanDestinationDir
siteDir Directory that your site is stored in. ❌ /github/workspace


- name: Publish Site
  uses: chabad360/hugo-gh-pages@master
    githubToken: ${{ secrets.PERSONAL_TOKEN }}
    # Remember to set this as a secret (i.e. secrets.PERSONAL_TOKEN).
    # Don't forget to set the secret value in the project settings.
    cname: # Or anything else
    # Use if you have a custom domain for your site.
    branch: master # Or anything else
    # Use if your site is not hosted on the gh-pages branch.
    repo: you/
    # Use if you're pushing to a different repo.
    # Dont add ".git" to the end of the URL (youl'll get 404s).
    hugoVersion: extended_0.58.3
    # Use if your site requires a specific version of Hugo.
    # Append "extended_" to the begining to use Hugo Extended.
    args: --gc --minify --cleanDestinationDir
    # Use if you want to pass some custom arguments to Hugo.
    siteDir: /github/workspace/site
    # Use this if your site isn't in the root of your repo.
    # The root of your repo can be found at /github/workspace

⭐ Credit

This project is based on mattbailey/actions-hugo