NetlifyのビルドをGitHub Actionsで毎日深夜に自動実行する方法
更新日:

ホームページの更新がコンテンツの追加に限らず、定期的なビルドを通じて反映される仕組みが増えています。特に、CMS(Content Management System)や外部APIの内容を定期的に取り込むようなケースでは、ビルドの自動化が大きな役割を果たします。
今回は、「毎日深夜0時にNetlifyでホームページを自動ビルド」する方法を紹介します。GitHub Actionsを使えば、プログラムを変更しなくても、時間トリガーによる再ビルドが簡単に実現できます。
このブログでは以下の内容をステップで解説します。
- Netlifyで「ビルドフック」を作成
- GitHub Actionsでスケジュールジョブを設定
- 実際のコード例と注意点
Netlifyでビルドフックを作成する
Netlifyでは、外部から手動でビルドを開始するための「ビルドフック」という機能があります。このURLにHTTPリクエストを送るだけで、Netlifyが対象のホームページを再ビルドしてくれます。
手順:
- Netlifyのダッシュボードにログイン
- 対象のサイトを選択
- 左メニュー「Site settings」→「Build & deploy」→「Build hooks」を選択
- 「Add build hook」ボタンをクリック
- 名前は任意(例:
daily-build
) - ブランチは普段使っているビルド用ブランチ(例:
main
)
- 名前は任意(例:
- 作成後に表示されるURL(例:
https://api.netlify.com/build_hooks/xxxxxxxx
)をコピー
このURLが、GitHub Actionsから毎日叩くエンドポイントになります。
GitHub Actionsの設定
GitHub Actionsでは、schedule
という設定を使って「毎日決まった時間」に処理を実行することができます。
フォルダ構成:
.github/
└── workflows/
└── netlify-daily-build.yml
ファイルの中身(例):
name: Daily Netlify Build
on:
schedule:
- cron: '0 0 * * *' # 毎日0:00 (UTC) に実行
workflow_dispatch: # 手動実行も可能にする
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Trigger Netlify Build Hook
run: curl -X POST https://api.netlify.com/build_hooks/あなたのフックURL
cronの時刻に関する注意
GitHub ActionsのcronはUTC(協定世界時)で指定されます。日本時間(JST)で深夜0時にビルドしたい場合は、UTCの15時(前日15:00)を指定します。
- cron: '0 15 * * *' # JSTの0:00に相当
コードの解説と補足
curl -X POST
は、NetlifyのビルドフックにHTTPリクエストを送信しています。workflow_dispatch
を入れると、GitHubの画面から「手動で実行」もできるようになります。テスト時に便利です。
一般的な注意点とよくあるミス
1. フックURLをGitHubにそのまま書くのは危険?
基本的にNetlifyのビルドフックはセキュリティが高い情報ではありませんが、念のためGitHub Secretsなどに保存しておくのが望ましいです。
run: curl -X POST ${{ secrets.NETLIFY_BUILD_HOOK_URL }}
GitHubのリポジトリ設定で NETLIFY_BUILD_HOOK_URL を登録しておきましょう。
2. リポジトリがPrivateだとNetlifyのビルドは失敗する?
これはNetlifyのデプロイ設定次第です。リポジトリがPrivateでも、NetlifyにデプロイキーやGitHubとの連携が正しく設定されていれば問題ありません。
3. 時間になっても実行されない
cron
の指定がUTCであることを忘れがちです。また、GitHub Actionsのスケジュールは最小でも1時間単位なので、分単位の細かい時間指定はできません。
実行結果の確認
- GitHubの「Actions」タブを開くと、スケジュールジョブの実行状況が確認できます。
- 成功/失敗のログをチェックすることで、ビルドエラーの原因も把握できます。
まとめ
本記事では、GitHub Actionsを使って毎日Netlifyのビルドを自動実行する方法を紹介しました。以下のような場合に特に有効です。
- コンテンツが外部ソース(APIなど)と連動している
- 定期的なバッチ処理やリセットをしたい
- 毎日更新されるデータを扱っている(ブログやニュースサイトなど)
検索ボックスへキーワードを入力して ください