Cloudflare Pagesのビルドを定期実行に切り替える

公開日:
目次

Cloudflare PagesでGitHub連携していると、pushの度に自動ビルドが走ります。ブログのように頻繁に更新しない場合、ビルド回数が無駄に増えてしまう問題がありました。定期実行に切り替えたので、備忘録として残します。

自動ビルドを停止する

まず、pushによる自動ビルドを停止します[1]

  1. Cloudflareダッシュボードで対象のPagesプロジェクトを開く
  2. Settings > Builds & Deploymentsに移動
  3. 「Pause deployments」をクリック

これでGitHubへのpushでビルドが走らなくなります。

Deploy Hookを作成する

定期実行でビルドをトリガーするためのURLを取得します[2]

  1. 同じくSettings > Builds & Deploymentsに移動
  2. 「Deploy hooks」セクションで「Add deploy hook」をクリック
  3. 名前(例:scheduled-deploy)とブランチ(例:main)を入力
  4. 生成されたURLをコピー

このURLにPOSTリクエストを送ると、ビルドが開始されます。

Cloudflare Workerを作成する

Workers & Pagesから新規Workerを作成し、以下のコードを設定します[3]

scheduled-deploy-worker.js
export default {
  async scheduled(event, env, ctx) {
    ctx.waitUntil(
      fetch('ここにDeploy HookのURLを貼り付け', {
        method: 'POST',
      })
    );
  },
};

Cronトリガーを設定する

Workerの設定画面でスケジュールを指定します。

  1. Workerの「Triggers」タブを開く
  2. 「Add Cron Trigger」をクリック
  3. cron式を入力(例:0 0 * * * で毎日UTC 0時)
  4. 「Execution summary」で実行タイミングを確認

日本時間で毎日9時に実行したい場合は、0 0 * * *(UTC 0時 = JST 9時)と設定します。

脚注
  1. Branch deployment controls - Cloudflare Pages docs ↩︎

  2. Schedule Cloudflare Pages Builds - North Star Themes ↩︎

  3. Cloudflare Pages Cron Deploys - sheetsj ↩︎