前回のエントリでHugoの記事編集はWindows端末上で完結して行えるようになった以上、後続の手順であるHugoのプレビューやビルド及びGutHubへのデプロイについてもFreeBSDにログインすることなく実施できるようにしたくなったのでメモ。
Hugoのプレビュー
Hugoの環境自体はFreeBSDのJail上で動かしているので、単純にnohup
付きでバックグラウンド実行しておけばOKかなと。ただデフォルトだとlocalhostでしかリッスンしないので、--baseURL
オプションでリッスンするIPアドレスを指定する。後はキャッシュがプレビュー時の悪さをする可能性があるので--ignoreCache
も一応付けておく。
nohup hugo server -D --baseURL http://<JailのIPアドレス>/ --ignoreCache
これをJailの起動時に自動実行できるようにしたいのだけど、Jail内のcronに@reboot
で登録しても上手いこと動かないので考え中。Jailの場合は指定方法が異なるのかもしれないけどそれらしき情報が出てこない。まあJailの起動停止とか基本的にはメンテナンスのタイミングでしか実施しないから手動対応でも問題はないかな。。
Hugoのビルド及びGitHubへのデプロイ
公式サイトにそのものズバリなスクリプトがあるのでshebangとかビルド対象ディレクトリを書き換えた上で流用すればOKですが、都度都度GitHubのユーザ名/パスワードを入れるのが手間&自動化において支障になるため、SSH鍵をGitHubに登録して対応することにした。詳細は以下サイトを参照。
Git リポジトリ URL を書き換える git-config の設定 "insteadOf" と "pushInsteadOf" - kakakakakku blog
実行は最初Windows端末からリモートで叩くことも考えたけどそれだとFreeBSDにログインする手間とあまり変わらないので、定期的にcronで動かしてしまうことにした。変更なければgit commit
とかgit push
も空振ってくれるしね。こちらは問題なくcron経由で定期実行できています。
スクリプト
ほぼ公式サイトの通りだけど、cronからの実行を想定してshebang変えたりPATH通したり1、Hugoのサイトディレクトリにcdしてるあたりが主な変更点。あと、Hugoビルド先のディレクトリをdocs
に変更しているのでその点も変更しています。
#!/usr/local/bin/zsh
export PATH="$PATH:/usr/local/bin"
echo -e "\033[0;32mDeploying updates to GitHub...\033[0m"
# Go to hugo site folder
cd <Hugoのサイトディレクトリ>
# Build the project.
hugo # if using a theme, replace with `hugo -t <YOURTHEME>`
# Go To docs folder
cd docs
# Add changes to git.
git add .
# Commit changes.
msg="rebuilding site `date`"
if [ $# -eq 1 ]
then msg="$1"
fi
git commit -m "$msg"
# Push source and build repos.
git push origin master
-
通す必要ないかもしれないけど念のため ↩︎