🚀 新リリースを最も安全に反映する方法:Cloudflare Pages 複数アカウント自動デプロイ
GitHub リポジトリに新しいリリースバージョンが公開された際、最新コードを取得してブログに反映する中で、次のような慎重な疑問が生じることがあります。
「新バージョンのエンジンコアやデータベースマイグレーションは、現在稼働中の本番ブログへ問題なく適用できるだろうか?」
SvelteKit Blog Engine では、レイアウト、カラー、フォントなどのデザイン設定や投稿記事がすべて D1 データベースに安全に保持されるため、コードを更新しても管理画面で設定したブログ UI が初期化されることはありません。
しかし、新バージョンで追加されたコア機能や D1 スキーマ変更、デプロイスクリプトが自身の Cloudflare 環境で正常に動作するかを事前に確認したい場合があります。その際、最も安全な方法は無料の Cloudflare 補助アカウント(テストインスタンス)へ先にデプロイして動作を確認し、問題がなければ本番アカウントへ反映することです。
従来の Cloudflare ツール(Wrangler)では、アカウント切り替えのたびにブラウザログインのやり直しや設定ファイルの書き換えが必要で、ローカルキャッシュの競合による誤デプロイのリスクもありました。本記事では、そのような手間を排除し、**新リリースをテスト環境で事前検証して本番へ安全にデプロイする「複数アカウント対応ワンクリックデプロイパイプライン」**をまとめました。
🔄 1. 実践的な安全デプロイワークフロー
複数アカウントデプロイシステムを活用することで、以下のような安全なデプロイサイクルを構築できます。
🔑 2. 事前準備:Cloudflare API トークンの発行(アカウント毎に初回1回)
ブラウザポップアップなしでバックグラウンドから安全にデプロイするため、各 Cloudflare アカウントで API トークン を初回1回のみ発行しておきます。
2-1. 最小権限 API トークンの作成手順
- Cloudflare ダッシュボード ログイン ➔ 右上 [マイプロファイル] ➔ [API トークン] メニューへ移動。
- [トークンを作成] をクリックし、
Cloudflare Pages を編集テンプレートの [テンプレートを使用] を選択。 - アクセス許可(Permissions) セクション下部の
+ さらに追加を押し、以下の2つの権限を追加します:アカウント-D1-編集(D1 データベーススキーマ自動マイグレーション用)アカウント-Workers KV Storage-編集(画像保存用バインディング)
💡 セキュリティ Tip: グローバル API キーの代わりに、ビルド・デプロイに必要な Pages、D1、KV の3リソースのみ権限を付与する方式(最小権限の原則) が最も安全です。
- アカウントリソース で対象アカウントを選択し、[概要へ進む] ➔ [トークンを作成] をクリック。
- 発行された API トークン文字列 をコピーします。
2-2. 32桁のアカウント ID の確認
ダッシュボード接続時のブラウザアドレスバー(URL)から32桁の文字列を確認できます:
https://dash.cloudflare.com/1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d/workers-and-pages
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
(この部分が Account ID です)
📦 3. バックアップファイルによる1秒アカウント登録 (deploy:sync)
D1 ID や KV ID を手動で探す必要なく、管理画面の基本機能である「デプロイ設定バックアップ」ファイルを利用して一括登録します。
- 対象ブログの管理画面 ➔ [環境設定] ➔ [データ管理] から [デプロイ設定ダウンロード] をクリック。
- ダウンロードしたファイル名を任意のアカウント識別子に変更し、プロジェクトルートへ配置:
- 例(テストアカウント):
wrangler.backup.test.json - 例(本番アカウント):
wrangler.backup.main.json
- 例(テストアカウント):
- ターミナルで同期コマンドを実行:
npm run deploy:sync
======================================================
✅ [.deploy-accounts.json] アカウント設定の同期完了!
======================================================
📋 [登録済みアカウント一覧]
- main (Main Blog Account): 🟢 準備完了
- test (Test Blog Account): 🟡 token/accountId の入力が必要です
- 生成された
.deploy-accounts.jsonを開き、発行したtokenとaccountIdを入力します:
{
"test": {
"name": "Test Staging Account",
"token": "実際のAPIトークン",
"accountId": "実際の32桁アカウントID",
"blogProject": "test-blog-web",
"adminProject": "test-blog-admin",
"d1": {
"BLOG_DB": { "name": "test-blog-db", "id": "11111111-2222-3333-4444-555555555555" },
"USER_DB": { "name": "test-user-db", "id": "66666666-7777-8888-9999-000000000000" }
},
"kv": {
"IMAGES_KV": "aaaaaaaaaabbbbbbbbbbccccccccccdd"
}
}
}
安全性の保証:
deploy:syncは入力済みのトークンやアカウント ID を上書きせず安全に保持(Merge)します。
🚀 4. 実践デプロイシナリオ
シナリオ A. テストアカウントへの先行検証デプロイ(推奨)
npm run deploy:multi -- test
シナリオ B. 検証完了後の本番アカウント安全デプロイ
npm run deploy:multi -- main
シナリオ C. 複数ブログの一括バージョンアップ
npm run deploy:multi -- --all
シナリオ D. ブログ画面または管理画面の個別選択デプロイ
# test アカウントの Blog(Web) のみデプロイ
npm run deploy:multi -- test --blog-only
# test アカウントの Admin(管理画面) のみデプロイ
npm run deploy:multi -- test --admin-only
🛡️ 5. セッション競合を遮断する3段階サンドボックス設計

- セッションサンドボックス:
APPDATAを一時ディレクトリへ隔離し、ローカル PC の既存ブラウザログインセッションを保護します。 - アトミックな設定復元: デプロイの瞬間のみ対象の
wrangler.jsonを適用し、完了後にfinallyブロックで確実に元通り復元します。 - キャッシュ自動削除: デプロイ直後にローカルキャッシュを初期化するため、通常の単一デプロイコマンド(
npm run deploy:blog等)と併用してもセッションが混ざりません。
📋 6. コマンドリファレンスまとめ
| 用途 | コマンド |
|---|---|
| アカウント設定の自動同期 | npm run deploy:sync |
| 特定アカウントのデプロイ (Blog + Admin) | npm run deploy:multi -- <アカウント名> |
| 特定アカウントの Blog のみ選別デプロイ | npm run deploy:multi -- <アカウント名> --blog-only |
| 特定アカウントの Admin のみ選別デプロイ | npm run deploy:multi -- <アカウント名> --admin-only |
| 登録済み全アカウントの一括更新 | npm run deploy:multi -- --all |
💡 7. おわりに
管理画面でカスタマイズしたデザインや記事データは D1 データベースにそのまま保持された状態で、テスト環境を通じて安心して新リリースを反映できるデプロイパイプラインが整いました。
安全な複数アカウントデプロイを活用し、ご自身のブログをより安定的かつ快適に運用してください。
コメント 0件
コメントを投稿するにはログインが必要です。