ブログ記事の自動公開を仕込みました。予約機能付き。 記事を書いて GitHub にプッシュすれば、あとは何もしなくても自動で Web サーバーに反映できるようになりました。
GitHub Actions では、リポジトリに対する一連の自動処理を「ワークフロー」として定義できます。 今回の自動化は、このワークフローを2つのリポジトリで連鎖させることで組み立てました。
ワークフローは、トリガーするイベントと処理をセットで定義します。 Hugo は未来の記事をビルド成果物に含めないので、スケジュール実行で予約機能が実現できます。
-
ソースリポジトリのワークフロー
- トリガー
mainブランチへのプルリクエストのマージ- スケジュール実行(毎日)
- 処理
- Hugoでサイトをビルドし、成果物リポジトリへプッシュ
- トリガー
-
成果物リポジトリのワークフロー
- トリガー
mainブランチへのプッシュ(ソースレポジトリのワークフローから)
- 処理
rsyncを使い、Webサーバーへビルド成果物を転送
- トリガー
成果物レポジトリへプッシュする工程を追加することで、記事の公開履歴を残すことができるのがポイントです。 もちろん、Hugoでサイトをビルドして、直接Webサーバーへビルド成果物を転送しても良いです。
これで、明日の記事を書いて、翌朝に公開というのが楽になります。嬉しい!