GitHub Actions の環境変数と Secrets を Cloudflare に連携する方法
GitHub Actions の環境変数や Secrets を wrangler-action を使って安全に Cloudflare Workers に渡す CI/CD 構築手順を解説。
GitHub Actions の環境変数や Secrets を Cloudflare(Workers、Pages、各種リソース)と連携させるには、GitHub リポジトリ側で Secrets を設定し、wrangler-action またはカスタム CI/CD ワークフローステップに注入します。
アーキテクチャ構成図#
flowchart LR
subgraph GitHub["GitHub エコシステム"]
G_SEC["GitHub Secrets & Vars<br>(CLOUDFLARE_API_TOKEN, DB_PASS, APP_ENV)"]
G_ACT["GitHub Actions Runner<br>(CI/CD パイプライン)"]
G_SEC -->|env / with で注入| G_ACT
end
subgraph CF["Cloudflare プラットフォーム"]
WRANGLER["Cloudflare Wrangler / Deploy Action"]
CF_WORKER["Cloudflare Worker / Pages / リソース"]
G_ACT -->|認証 & デプロイ| WRANGLER
WRANGLER -->|コード・変数・Secrets を反映| CF_WORKER
end
ステップ 1: Cloudflare 認証情報の取得#
Cloudflare ダッシュボードから2つの認証情報を取得・生成する手順:
1. CLOUDFLARE_ACCOUNT_ID の取得#
Account ID は、Cloudflare アカウントに紐付く32文字の16進数文字列です。
- 方法 A: Workers & Pages 画面から(最速)
- Cloudflare ダッシュボード ↗ にログインします。
- 左サイドバーで Compute (Workers & Pages)(または Workers & Pages)をクリックします。
- 右サイドバーの Account details にある Account ID をコピーします。
- 方法 B: URL から確認
- ダッシュボードで任意のドメインや項目を開きます。
- ブラウザのアドレスバーを確認します:
https://dash.cloudflare.com/<ACCOUNT_ID>/workers-and-pages dash.cloudflare.com/の直後にある英数字が Account ID です。
2. CLOUDFLARE_API_TOKEN の生成#
Global API Key は使用せず、最小権限(Least Privilege)を付与した API Token を作成します。
- ダッシュボード右上のユーザーアイコン -> My Profile を選択します。
- 左メニューから API Tokens をクリックします。
- Create Token をクリックします。
- テンプレートを使用するかカスタム作成します:
- テンプレート使用: Edit Cloudflare Workers を探し、Use template をクリックします。
- カスタム作成: Create Custom Token を選択し以下を設定します:
- Permissions:
- Account -> Workers Scripts -> Edit
- Account -> Workers KV Storage -> Edit(KV 利用時)
- Account -> Pages -> Edit(Pages デプロイ時)
- Account Resources: Include -> All accounts(または特定のアカウントを選択)。
- Permissions:
- ページ最下部の Continue to summary -> Create Token をクリックします。
- 生成されたトークンを直ちにコピーして保存します(二度と表示されません)。
CLI によるクイック検証#
ターミナルから curl を実行して、トークンが有効か即座に確認できます:
curl -X GET "https://api.cloudflare.com/client/v4/user/tokens/verify" \
-H "Authorization: Bearer <YOUR_CLOUDFLARE_API_TOKEN>"bash"status": "active" が返ってくれば、トークンは正常に有効化されており GitHub Secrets に設定可能です。
ステップ 2: GitHub で Secrets と環境変数を設定#
Repository Settings > Secrets and variables > Actions に移動して設定します:
1. Repository Secrets (暗号化された機密情報)#
CLOUDFLARE_API_TOKEN:Worker:EditまたはPages:Edit権限を持つ Cloudflare API トークン。CLOUDFLARE_ACCOUNT_ID: Cloudflare アカウント ID。APP_SECRET_KEY: アプリケーション実行時に使用する暗号化キーや外部 API キー。
2. Repository Variables (平文・非機密情報)#
ENVIRONMENT:productionまたはstaging。API_BASE_URL:https://api.example.com。
ステップ 3: GitHub Actions ワークフローの設定#
.github/workflows/deploy.yml を作成し、デプロイ時に変数や Secrets を渡します:
name: Deploy to Cloudflare
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
name: Deploy
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
- name: Install dependencies
run: npm ci
- name: Deploy to Cloudflare Workers
uses: cloudflare/wrangler-action@v3
with:
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
command: deploy
env:
# Wrangler のビルド環境に注入される変数
ENVIRONMENT: ${{ vars.ENVIRONMENT }}
API_BASE_URL: ${{ vars.API_BASE_URL }}
APP_SECRET_KEY: ${{ secrets.APP_SECRET_KEY }}yamlステップ 4: Cloudflare での変数アクセス#
平文変数と暗号化されたシークレットの種別に応じて設定します:
1. 平文変数 (wrangler.jsonc)#
機密ではない設定値は設定ファイル内に直接定義できます:
{
"name": "my-worker",
"main": "src/index.ts",
"compatibility_date": "2026-08-01",
"vars": {
"ENVIRONMENT": "production",
"API_BASE_URL": "https://api.example.com"
}
}json2. ランタイム暗号化シークレット (Wrangler 経由でプッシュ)#
GitHub Actions から直接 Cloudflare へシークレットを送信し、Git ソースコードに一切含めない構成:
- name: Push Secrets to Cloudflare Worker
run: |
echo "${{ secrets.APP_SECRET_KEY }}" | npx wrangler secret put APP_SECRET_KEY
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}yaml変数タイプの比較#
| 種別 | 推奨保存場所 | Worker での参照方法 |
|---|---|---|
| 認証トークン (CI/CD) | GitHub Secrets | secrets.CLOUDFLARE_API_TOKEN |
| 機密ランタイム値 | GitHub Secrets -> Cloudflare Secrets | env.APP_SECRET_KEY |
| 環境フラグ | GitHub Variables / wrangler.jsonc | env.ENVIRONMENT |
[!TIP] 機密情報を
wrangler.jsonc内に直接記述したり、Git リポジトリにコミットしないでください。常に GitHub Secrets とwrangler secret putを利用しましょう。