How to host a static site (Hugo) on GitHub Pages
GitHub Pages is a free hosting service that can effectively be used for static
content. For example this site is entirelty made up of HTML files in the master
branch of the repository raffaelesgarro.github.io. Only two things are needed:
- a CNAMErecord in the DNS
- a CNAMEfile to instruct the Pages virtual host
I use Hugo to write the posts in Markdown, and obviously keep the files in Git.
The first problem is I can’t use the remote master branch, so I keep the posts
in a src branch. Another strange thing is that the build artifacts must be
kept in version control (!) and since I don’t really like it, I clear
master every time I push. So this is my typical workflow
- git checkout src
- … create posts, tweak theme and commit …
- build the site hugo -d dist
- Move the site outside the repo mv dist /tmp/dist
- Come back to master git checkout -f master
- Replace the content of the directory (git rm -rf .andgit clean -fxd) with the content ofdist, and eventually commit
- Rebase git rebase --root
- Push git push -f origin --all
I rebase master because I don’t want to keep the builds in the history - it’s
a huge load of files! Obviously that won’t take down GitHub, and the commits will
still be online until garbage collection… But still I feel better this way :)