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.
Local development:
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.
- CloudFlare is recommend for HTTPS (free).
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 withall.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
).
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.
- hugo-deploy-example.s3-website.ca-central-1.amazonaws.com is the website endpoint on Amazon S3.
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/*"
]
}
]
}