Skip to content
Example deployment to S3 for Hugo blogs.
HTML CSS Shell
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.

README.md

Hugo Deploy

This is an starting point for a Hugo blog with deployment to Amazon S3 via GitHub Actions.

It's how I deploy nathany.com, Edmonton Go, and fsnotify.org.

Requirements

Local development:

  • Install the hugo binary, download it at gohugo.io.
    • On Mac use Homebrew: brew install hugo

Remote:

  • A GitHub account with the contents of your website (free).
  • An Amazon account to create an S3 bucket (pennies).
  • DNS configured to point to S3.

What Is Provided?

  • hugo new site <mysite> creates a config.toml and a few empty folders. I've added .gitkeep files so those folders are checked in.
  • An assets/sass folder with all.sass that will be converted to css.
  • A script to watch for file changes in development and include drafts in the output. Run ./watch.sh.
  • .gitignore to avoid committing the generated files.
  • Workflow file that GitHub Actions uses for deployment (.github/workflows/build.yml).

Deployment

GitHub Actions automatically deploy the website when changes are merged to the master branch on GitHub. In my experience, deploys take a few seconds to complete.

This bucket policy provides public access to the files in S3.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::hugo-deploy-example/*"
            ]
        }
    ]
}
You can’t perform that action at this time.