このブログはまだCI/CDも分からない頃に始めたのもあって、GitHub Actionsを使っていないビルドをしていた。いちいちビルドしてリポジトリにpushするのも面倒だし、Chanomic Sketchを昨年開設したときにGitHub Actionによるビルドを学んだので、重い腰を上げて切り替えようと思った。そのときのメモ。
色々調べていたら、Chanomic Sketchで上げたときとは違って、gh-pagesのようなブランチを作らなくても良い方法が作られていたので、その方法でやっていく。
基本的な手順はHugoの公式に書かれているが、一応現時点でのやり方をメモっておく。
(参考)現状のデプロイ方法と今後のデプロイ方法の比較
現状は、
hugo new posts/.../index.mdで記事を作成- 記事を書いて
hugo serverで確認 - 書き終わったら
index.mdのdraft: tureを外してcommit hugoコマンドを単体で実行してページのビルドをする →docs/下にHTMLが展開されるので、それをcommit- pushする
と手順を踏んでいたが、今回の変更によって、
hugo new posts/.../index.mdで記事を作成- 記事を書いて
hugo serverで確認 - 書き終わったら
index.mdのdraft: tureを外してcommit - pushする
と手順が1個減る。また、docs/ディレクトリがなくなるためコミットログがすっきりすることも期待される。
ブログの修正
まず、config.tomlのpublishDirにてdocs/下にHTMLを展開するようにしてあったが、この記述はいらないので消す。
| |
また、docs/ディレクトリは git rm -rfで消す。
GitHub Pagesの設定
Pagesの設定に移動して、Build and deploymentの項目のSourceを、「Deploy from a branch」から「GitHub Actions」に変更。

workflowの記述
次に、.github/workflows/<適当な名前>.yaml を作成し、そこに以下の記述をする。
注)これは現時点でのHugoの公式をそのまま借りてきている。最新版は公式を参照すること。
| |
やっている内容としては、
on: push: branches: masterで、masterブランチにpushされたときにこのworkflowが実行される- 最近だとデフォルトがmainブランチのはずだが、このブログを作ったときはmasterがデフォルトだった。新しく静的サイトを公開する場合はここがmainであることがほとんどだと思うので注意。
- jobとしてbuildとdeployと呼ばれるものを定義する。workflowではjob単位で何らかの処理が実行される。
- buildとdeployの大まかな処理は以下の通り。
- buildでページをビルドして、それをartifactという形でアップロードする
- artifactをdeployが受け取って、GitHub Pagesとしてデプロイする
デプロイの実行
上記の .github/workflows/*.ymlをcommitしてpushすれば、自動的にworkflowが実行される。
Actionsタブの、最新のworkflowを見てみると、以下のようにbuildとdeployのjobが実行されていることが確認できる。

またbuildジョブのUpload artifactステップにおいて、hugoでビルドした結果がtarで固められてアップロードされているのが確認できる。

そして、deployジョブがそれを受け取ってデプロイを実行していることが確認できる。

これで https://ユーザ名.github.io/リポジトリ名 に静的ページがデプロイされる。