blog.dopana

Back

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 画面から(最速)
    1. Cloudflare ダッシュボード にログインします。
    2. 左サイドバーで Compute (Workers & Pages)(または Workers & Pages)をクリックします。
    3. 右サイドバーの Account details にある Account ID をコピーします。
  • 方法 B: URL から確認
    1. ダッシュボードで任意のドメインや項目を開きます。
    2. ブラウザのアドレスバーを確認します: https://dash.cloudflare.com/<ACCOUNT_ID>/workers-and-pages
    3. dash.cloudflare.com/ の直後にある英数字が Account ID です。

2. CLOUDFLARE_API_TOKEN の生成#

Global API Key は使用せず、最小権限(Least Privilege)を付与した API Token を作成します。

  1. ダッシュボード右上のユーザーアイコン -> My Profile を選択します。
  2. 左メニューから API Tokens をクリックします。
  3. Create Token をクリックします。
  4. テンプレートを使用するかカスタム作成します:
    • テンプレート使用: 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(または特定のアカウントを選択)。
  5. ページ最下部の Continue to summary -> Create Token をクリックします。
  6. 生成されたトークンを直ちにコピーして保存します(二度と表示されません)。

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 を渡します:

ステップ 4: Cloudflare での変数アクセス#

平文変数と暗号化されたシークレットの種別に応じて設定します:

1. 平文変数 (wrangler.jsonc)#

機密ではない設定値は設定ファイル内に直接定義できます:

wrangler.jsonc
{
  "name": "my-worker",
  "main": "src/index.ts",
  "compatibility_date": "2026-08-01",
  "vars": {
    "ENVIRONMENT": "production",
    "API_BASE_URL": "https://api.example.com"
  }
}
json

2. ランタイム暗号化シークレット (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 Secretssecrets.CLOUDFLARE_API_TOKEN
機密ランタイム値GitHub Secrets -> Cloudflare Secretsenv.APP_SECRET_KEY
環境フラグGitHub Variables / wrangler.jsoncenv.ENVIRONMENT

[!TIP] 機密情報を wrangler.jsonc 内に直接記述したり、Git リポジトリにコミットしないでください。常に GitHub Secrets と wrangler secret put を利用しましょう。

参考文献#