目次
Cloudflare PagesでGitHub連携していると、pushの度に自動ビルドが走ります。ブログのように頻繁に更新しない場合、ビルド回数が無駄に増えてしまう問題がありました。定期実行に切り替えたので、備忘録として残します。
自動ビルドを停止する
まず、pushによる自動ビルドを停止します[1]。
- Cloudflareダッシュボードで対象のPagesプロジェクトを開く
- Settings > Builds & Deploymentsに移動
- 「Pause deployments」をクリック
これでGitHubへのpushでビルドが走らなくなります。
Deploy Hookを作成する
定期実行でビルドをトリガーするためのURLを取得します[2]。
- 同じくSettings > Builds & Deploymentsに移動
- 「Deploy hooks」セクションで「Add deploy hook」をクリック
- 名前(例:scheduled-deploy)とブランチ(例:main)を入力
- 生成された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の設定画面でスケジュールを指定します。
- Workerの「Triggers」タブを開く
- 「Add Cron Trigger」をクリック
- cron式を入力(例:
0 0 * * *で毎日UTC 0時) - 「Execution summary」で実行タイミングを確認
日本時間で毎日9時に実行したい場合は、0 0 * * *(UTC 0時 = JST 9時)と設定します。
