This is the source for my personal website at https://parsiya.net.
It is generated using Hugo and the Hugo-Octopress Theme. I ported the Octopress classic theme to Hugo.
hugo new post/2018-11-23-post-name/index.markdown
(or index.md).ctrl+shift+b in VS Code starts a task that runs the Hugo watch server and
opens it in a browser. See .vscode/tasks.json.The website is hosted in an AWS S3 bucket. CloudFront provides CDN and TLS (and certificate). GitHub pages are also popular (and free). See my blog post Automagically Deploying Websites with Custom Domains to GitHub Pages.
I use a custom GitHub action. See deploy.yml.
I used s3deploy to deploy the blog to AWS. The configuration is inside .s3deploy.yml. This example is suitable (with a bit of modification) for most static websites.
Static resources (fonts, images, css, etc.) do not have expiration dates. Everything else uses gzip compression. When a resource is updated, s3deploy invalidates its CloudFront cache.
Note: Enabling gzip compression for Keybase proofs (see
static/keybase.txt) breaks them.
Use the s3deploy's example IAM policy. At the time of writing, AWS does not support addressing separate CloudFront distributions with ARNs (Amazon Resource Names) so the resulting key can list and invalidate all distributions.
The blog used to use Travis CI. See @archive/.travis.yml.
language:minimal reduces build time by 20 seconds (compared to the default
container).AWS_ACCESS_KEY and AWS_SECRET_ACCESS_KEY
environment variables respectively. These are used by s3deploy.See @archive/deploy.bat for manual deployment.