Hugo, The world’s fastest framework for building websites. Caddy, the HTTP/2 web server with automatic HTTPS. Github webhook, which is allows you to build or set up GitHub Apps which subscribe to certain events on GitHub.com. With the three parts, we can build a static website and automatize deployment process. In the post, we can learn how to automated deployment static website
After developed your favorite static website with hugo, I suggest you remove third theme git submodule folder (.git folder in themes/{theme name}
and .gitmodules
in static website root path).
- Install caddy and hugo for server.
ssh your_server
sudo apt-get update
sudo apt-get upgrade
curl https://getcaddy.com | sudo bash -s personal http.git,http.hugo
sudo apt-get install hugo
- Create caddyfile
mkdir ~/caddy_log
cat ~/Caddyfile
trustkeeper.io {
tls mr.huangwenwei@gmail.com
gzip
root /home/deploy/www/trustkeeper.io/public
log /home/deploy/caddy_log/access.log
errors /home/deploy/caddy_log/errors.log
# caddy 的 http.git 插件
git {
repo git@github.com:wenweih/trustkeeper.io.git
path /home/deploy/www/
clone_args --recursive
pull_args --recurse-submodules
key /home/deploy/.ssh/id_rsa
#then git submodule update --init --recursive
hook /webhook {webhook secret fill in github}
then hugo --destination=/home/deploy/www/trustkeeper.io/public
hook_type github
}
}
-
Bind your server ip with domain, I strongly recommend cloudflare, which provides DNS Resolver service.
-
Github repo settings
- You should add server
/home/deploy/.ssh/id_rsa.pub
content to the repo as the deploy keys in Github webpage, you can find out in repo pagesettings > Deploy keys
and clickAdd deploy key
button to fill out the form. - Meanwhile in
settings > webhooks
page, clickAdd webhook
button.-
Payload URL: {domain.com}/webhook
https://trustkeeper.io/webhook etc - Content type: application/json
- Secret: the same as Caddyfile you set in server
-
- You should add server
-
Back to hosted static website server:
deploy@aly-node-hww:~$ caddy -conf=/etc/caddy/Caddyfile Activating privacy features... done. Cloning into '/home/deploy/www'... remote: Enumerating objects: 258, done. remote: Counting objects: 100% (258/258), done. remote: Compressing objects: 100% (168/168), done. remote: Total 258 (delta 80), reused 240 (delta 62), pack-reused 0 Receiving objects: 100% (258/258), 4.43 MiB | 1.17 MiB/s, done. Resolving deltas: 100% (80/80), done. Checking connectivity... done. 2018/11/11 21:02:56 ssh://git@github.com:wenweih/trustkeeper.io.git pulled. 0 draft content 0 future content 3 pages created 0 non-page files copied 0 paginator pages created 0 tags created 0 categories created in 80 ms 2018/11/11 21:02:56 Command 'hugo --destination=/home/deploy/www/trustkeeper.io/public' successful. http://trustkeeper.io https://trustkeeper.io
If your want to run the service background, go with
nohup
command:nohup caddy -conf=/etc/caddy/Caddyfile >/dev/null 2>&1 &
Finally, each git push for the repo, your website would be automated update.
https://trustkeeper.io here we go!
网友评论