GitHub Actionsでブログ予約投稿

ブログ記事の自動公開を仕込みました。予約機能付き。 記事を書いて GitHub にプッシュすれば、あとは何もしなくても自動で Web サーバーに反映できるようになりました。

GitHub Actions では、リポジトリに対する一連の自動処理を「ワークフロー」として定義できます。 今回の自動化は、このワークフローを2つのリポジトリで連鎖させることで組み立てました。

ワークフローは、トリガーするイベントと処理をセットで定義します。 Hugo は未来の記事をビルド成果物に含めないので、スケジュール実行で予約機能が実現できます。

  1. ソースリポジトリのワークフロー

    • トリガー
      • mainブランチへのプルリクエストのマージ
      • スケジュール実行(毎日)
    • 処理
      • Hugoでサイトをビルドし、成果物リポジトリへプッシュ
  2. 成果物リポジトリのワークフロー

    • トリガー
      • mainブランチへのプッシュ(ソースレポジトリのワークフローから)
    • 処理
      • rsyncを使い、Webサーバーへビルド成果物を転送

成果物レポジトリへプッシュする工程を追加することで、記事の公開履歴を残すことができるのがポイントです。 もちろん、Hugoでサイトをビルドして、直接Webサーバーへビルド成果物を転送しても良いです。

これで、明日の記事を書いて、翌朝に公開というのが楽になります。嬉しい!

by lwgena