Hugo flow and deploy process
March 29, 2016
This one will be in english, french translation will come later
This log is supported by Hugo, a free and open-source static site generator similar to Jekyll. Hugo is pretty straightforward to use:
$ hugo
0 of 1 draft rendered
0 future content
2 pages created
1 paginator pages created
0 tags created
0 categories created
in 27 ms
…and well-documented.
Basically to publish things you need to edit the markdown
files on the content
folder on the server and run hugo
to refresh the public
folder served by nginx.
But writing things using ssh on a server is not really usable, so here’s another workflow:
- do edition on your desktop
- manage it with git
- push changes to server
- refresh hugo on server
All you have to do is setup a bare repository on the server to push into and a clone checked-out copy somewhere else on the system where your web server can watch it. Here is a hook to put in git-bare-repo.git/hooks/post-receive
:
#!/bin/sh
# Don't forget to chmod +x
unset GIT_DIR
cd /var/www/website-chekout-repo-dir
git pull
hugo
Example output when you push to the repo:
remote: From ../mricher.fr
remote: a4ced08..dbad211 master -> origin/master
remote: Updating a4ced08..dbad211
remote: Fast-forward
remote: content/post/hugo-flow.md | 8 ++++++++
remote: 1 file changed, 8 insertions(+)
remote: 0 of 1 draft rendered
remote: 0 future content
remote: 2 pages created
remote: 1 paginator pages created
remote: 0 tags created
remote: 0 categories created
remote: in 28 ms
As you can see the hook’s output is displayed, yay !