All Projects → peaceiris → Actions Hugo

peaceiris / Actions Hugo

Licence: mit
GitHub Actions for Hugo ⚡️ Setup Hugo quickly and build your site fast. Hugo extended, Hugo Modules, Linux (Ubuntu), macOS, and Windows are supported.

Programming Languages

typescript
32286 projects

Labels

Projects that are alternatives of or similar to Actions Hugo

Hugo Awesome Identity
😤 Awesome Identity is a single-page Hugo theme to introduce yourself.
Stars: ✭ 301 (-48.81%)
Mutual labels:  hugo
Reveal Hugo
📽️ Create rich HTML-based presentations with Hugo and Reveal.js
Stars: ✭ 381 (-35.2%)
Mutual labels:  hugo
Hugo Theme Meme
You can’t spell aWEsoME without MEME! 😝
Stars: ✭ 459 (-21.94%)
Mutual labels:  hugo
Hugo Creative Portfolio Theme
Port of the creative portfolio theme to Hugo
Stars: ✭ 311 (-47.11%)
Mutual labels:  hugo
Kube
Kube is a professional and a responsive Hugo theme for developers and designers that offers a documentation section mixed with a landing page and a blog.
Stars: ✭ 349 (-40.65%)
Mutual labels:  hugo
Hugo Theme Zzo
Make a blog with hugo zzo theme!
Stars: ✭ 438 (-25.51%)
Mutual labels:  hugo
Tbd
Source for TrunkBasedDevelopment.com
Stars: ✭ 299 (-49.15%)
Mutual labels:  hugo
Hugo Theme Hello Friend
Pretty basic theme for Hugo that covers all of the essentials. All you have to do is start typing!
Stars: ✭ 586 (-0.34%)
Mutual labels:  hugo
Hugo Xmin
eXtremely Minimal Hugo theme: about 150 lines of code in total, including HTML and CSS (with no dependencies)
Stars: ✭ 351 (-40.31%)
Mutual labels:  hugo
Disqusjs
💬 Render Disqus comments in Mainland China using Disqus API
Stars: ✭ 455 (-22.62%)
Mutual labels:  hugo
Hugo Fresh
Hugo Fresh Theme
Stars: ✭ 317 (-46.09%)
Mutual labels:  hugo
Minimal
Personal blog theme powered by Hugo
Stars: ✭ 330 (-43.88%)
Mutual labels:  hugo
Hugo Theme Introduction
Minimal, single page, smooth-scrolling theme for Hugo static site generator.
Stars: ✭ 441 (-25%)
Mutual labels:  hugo
Cocoa Hugo Theme
Responsive Hugo blog theme
Stars: ✭ 306 (-47.96%)
Mutual labels:  hugo
Mainroad
Responsive, simple, clean and content-focused Hugo theme based on the MH Magazine lite WordPress theme
Stars: ✭ 509 (-13.44%)
Mutual labels:  hugo
Jamstackthemes
A list of themes and starters for JAMstack sites.
Stars: ✭ 298 (-49.32%)
Mutual labels:  hugo
Hugo Nuo
🎨 A responsive light & clean hugo theme for blogger.
Stars: ✭ 405 (-31.12%)
Mutual labels:  hugo
Ox Hugo
A carefully crafted Org exporter back-end for Hugo
Stars: ✭ 591 (+0.51%)
Mutual labels:  hugo
Hugo Paper
🥛 A simple, clean, flexible Hugo theme
Stars: ✭ 538 (-8.5%)
Mutual labels:  hugo
Minimo
Minimo - Minimalist theme for Hugo
Stars: ✭ 453 (-22.96%)
Mutual labels:  hugo

GitHub Actions for Hugo

GitHub Actions for Hugo

license release GitHub release date Release Feed Test Code Scanning

CodeFactor codecov Maintainability

This Hugo Setup Action can install Hugo to a virtual machine of GitHub Actions. Hugo extended version, Hugo Modules, Linux (Ubuntu), macOS, and Windows are supported.

From v2, 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-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. For the first deployment, we have to do this operation: First Deployment with GITHUB_TOKEN - peaceiris/actions-gh-pages

peaceiris/actions-gh-pages - GitHub

name: github pages

on:
  push:
    branches:
      - main  # Set a branch to deploy

jobs:
  deploy:
    runs-on: ubuntu-18.04
    steps:
      - uses: actions/[email protected]
        with:
          submodules: true  # Fetch Hugo themes (true OR recursive)
          fetch-depth: 0    # Fetch all history for .GitInfo and .Lastmod

      - name: Setup Hugo
        uses: peaceiris/[email protected]
        with:
          hugo-version: '0.81.0'
          # extended: true

      - name: Build
        run: hugo --minify

      - name: Deploy
        uses: peaceiris/[email protected]
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: ./public

Options

⭐️ Use Hugo extended

Set extended: true to use a Hugo extended version.

- name: Setup Hugo
  uses: peaceiris/[email protected]
  with:
    hugo-version: '0.81.0'
    extended: true

⭐️ Use the latest version of Hugo

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

- name: Setup Hugo
  uses: peaceiris/[email protected]
  with:
    hugo-version: 'latest'

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

Tips

⭐️ Caching Hugo Modules

Insert a cache step before site-building as follows. Note that the cache dir location of Hugo on a Linux-based operating system is /tmp/hugo_cache. On macOS, ${TMPDIR}/hugo_cache has the location.

- uses: actions/[email protected]
  with:
    path: /tmp/hugo_cache
    key: ${{ runner.os }}-hugomod-${{ hashFiles('**/go.sum') }}
    restore-keys: |
      ${{ runner.os }}-hugomod-

- name: Build
  run: hugo --minify

⭐️ Read Hugo version from file

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

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

HUGO_VERSION=0.81.0

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/[email protected]
      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
    # image: peaceiris/hugo:v${HUGO_VERSION}-full  # Hugo Modules and Node.js
    ports:
      - 1313:1313
    volumes:
      - ${PWD}:/src
    command:
      - 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)

⭐️ Workflow for autoprefixer and postcss-cli

Here is an example workflow for the google/docsy Hugo theme. This theme needs autoprefixer and postcss-cli to build a project. The following workflow is tested on google/docsy-example.

A workflow for the Hugo Babel pipeline is also the same as follows.

name: github pages

on:
  push:
    branches:
      - main  # Set a branch to deploy

jobs:
  deploy:
    runs-on: ubuntu-18.04
    steps:
      - uses: actions/[email protected]
        with:
          submodules: recursive  # Fetch the Docsy theme
          fetch-depth: 0         # Fetch all history for .GitInfo and .Lastmod

      - name: Setup Hugo
        uses: peaceiris/[email protected]
        with:
          hugo-version: '0.81.0'
          extended: true

      - name: Setup Node
        uses: actions/[email protected]
        with:
          node-version: '12.x'

      - name: Cache dependencies
        uses: actions/[email protected]
        with:
          path: ~/.npm
          key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
          restore-keys: |
            ${{ runner.os }}-node-

      - run: npm ci
      - run: hugo --minify

      - name: Deploy
        uses: peaceiris/[email protected]
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}

⭐️ Workflow for asciidoctor

Here is an example workflow for a Hugo project using asciidoctor.

name: github pages

on:
  push:
    branches:
      - main  # Set a branch to deploy

jobs:
  deploy:
    runs-on: ubuntu-18.04
    steps:
      - uses: actions/[email protected]
        with:
          submodules: true  # Fetch Hugo themes (true OR recursive)
          fetch-depth: 0    # Fetch all history for .GitInfo and .Lastmod

      - name: Setup Hugo
        uses: peaceiris/[email protected]
        with:
          hugo-version: '0.81.0'
          extended: true

      - name: Setup Ruby
        uses: ruby/[email protected]
        with:
          ruby-version: 2.7

      - run: gem install asciidoctor

      - name: Run Hugo
        run: |
          alias asciidoctor="asciidoctor --attribute=experimental=true --attribute=icons=font"
          hugo --minify

      - name: Deploy
        uses: peaceiris/[email protected]
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}

⭐️ Non-ascii Filename

cf. Gitinfo fails on unicode filename · Issue #3071 · gohugoio/hugo

name: github pages

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-18.04
    steps:
      - uses: actions/[email protected]
        with:
          fetch-depth: 0

      - name: Disable quotePath
        run: git config core.quotePath false

      - name: Setup Hugo
        uses: peaceiris/[email protected]
        with:
          hugo-version: '0.81.0'

CHANGELOG

License

About Maintainer

Maintainer Notes

Run npm test on a Docker container.

# On container
make build
make all

# Release script on host
./release.sh
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].