Cloudflare PagesとGitHubを連携している環境で、アプリを修正するために新しいブランチを作成しました。
git switch -c feature/update
修正してGitHubへpushします。
git push origin feature/update
すると、Cloudflare Pagesでデプロイが始まりました。
「まだ開発中なのに、なぜデプロイされるの?」
と少し困惑しました。
これはCloudflare Pagesの 「プレビュー ブランチ」 の設定によるものでした。
本番ブランチ以外を自動デプロイしたくない場合は、設定を変更できます。
1. 起こったこと
Cloudflare Pagesでは、GitHubのmainブランチを本番環境用のブランチとして設定しています。
その状態で、開発用のブランチを作成してpushしました。
main
↓
本番環境
feature/update
↓
GitHubへpush
↓
Cloudflare Pagesでもデプロイ開始
開発用ブランチをpushしただけだったので、
「なぜデプロイされたの?」
となりました。
確認すると、本番環境へのデプロイではなく、プレビュー用のデプロイでした。
2. なぜこのような事象が起きたのか
原因は、Cloudflare Pagesの 「プレビュー ブランチ」 の設定です。
GitHubなどのGitプロバイダーと連携したPagesプロジェクトでは、Production branch以外のブランチをプレビューデプロイの対象にできます。
現在の設定では、デフォルトで
すべての本番環境にないブランチ
が選択されています。
つまり、Production branchがmainの場合、
main
↓
本番環境へのデプロイ
feature/*
fix/*
test/*
その他のブランチ
↓
プレビューデプロイ
という動作になります。
そのため、今回のように開発用ブランチを作ってpushすると、Cloudflare Pagesでも自動的にデプロイが実行されます。
3. 「プレビュー ブランチ」をOFFにする方法
本番環境以外のブランチを自動デプロイしたくない場合は、 「プレビュー ブランチ」を「なし」 に変更します。
Cloudflareのダッシュボードで対象のPagesプロジェクトを開きます。
「設定」→「ブランチ コントロール」
と進み、「ブランチ コントロール」の編集画面を開きます。
設定画面には、次の項目があります。
プロダクション ブランチ
ここでは、本番環境に使用するブランチを指定します。
今回の例では、
main
です。
プレビュー ブランチ
ここが今回変更する場所です。
デフォルトでは、
○ すべての本番環境にないブランチ
が選択されています。
これを、
● なし(自動ブランチ デプロイを無効にします)
に変更します。
最後に 「保存」 をクリックします。
これで、Production branch以外のブランチをpushしても、プレビューデプロイが自動的に実行されなくなります。
設定の選択肢
「プレビュー ブランチ」には、次の3つの選択肢があります。
| 設定 | 動作 |
|---|---|
| すべての本番環境にないブランチ | Production branch以外を自動デプロイ |
| なし(自動ブランチ デプロイを無効にします) | プレビューデプロイを無効化 |
| カスタム ブランチ | 指定したブランチだけ自動デプロイ |
「本番環境にはmainだけをデプロイしたい」という運用なら、 「なし(自動ブランチ デプロイを無効にします)」 を選択すればOKです。
4. そもそも「プレビュー ブランチ」とは?
「プレビュー ブランチ」は、Production branchにマージする前の変更を、本番環境とは別の環境で確認するための機能です。
例えば、
main
↓
本番環境
feature/update
↓
プレビュー環境
という使い分けができます。
開発中の変更を実際のWeb環境で確認できるため、便利な機能です。
一方で、今回のように、
GitHubにpushする
↓
mainだけCloudflare Pagesにデプロイしたい
という運用では、プレビュー ブランチを有効にしておく必要はありません。
注意点
もう一つ覚えておきたいのが、GitHubのブランチを削除しても、Cloudflare Pagesのデプロイが削除されるわけではないということです。
例えば、
feature/update
↓
GitHubへpush
↓
プレビューデプロイ作成
↓
GitHubでfeature/updateを削除
とした場合でも、Cloudflare Pages側のデプロイは残ります。
GitHubでのブランチ削除と、Cloudflare Pagesのデプロイ削除は別の操作です。
不要になったデプロイは、Cloudflare Pages側で手動で削除する必要があります。
まとめ
Cloudflare PagesとGitHubを連携していると、デフォルトでは 「すべての本番環境にないブランチ」 が「プレビュー ブランチ」の対象になっています。
そのため、
git switch -c feature/update
git push origin feature/update
としただけでも、Cloudflare Pagesでプレビューデプロイが実行されます。
本番環境にはmainだけをデプロイしたい場合は、
設定 → ブランチ コントロール → プレビュー ブランチ → 「なし(自動ブランチ デプロイを無効にします)」
に変更します。
今回のように「ブランチをpushしたらデプロイされてしまった」という場合は、まず本番環境へのデプロイなのか、プレビューデプロイなのかを確認しましょう。
そしてプレビューデプロイが不要なら、「プレビュー ブランチ」をOFFにしてしまえばOKです。
なお、設定変更前に作成されたプレビューデプロイは、設定をOFFにしただけでは削除されません。不要なものはCloudflare Pages側で整理する必要があります。
