【設定・環境構築】GitHub Actions で Cloudflare Workers への CI/CD パイプラインを構築する
設定・環境構築約5分で読めます

この記事でわかること
- develop への push で自動デプロイするワークフローの完全な定義例
- workflow_dispatch の手動ボタンが UI に出てこない理由(main にファイルが必要)
- concurrency でデプロイの競合を防ぐ設定
- gh secret set でトークンを履歴に残さない渡し方
GitHub リポジトリと Cloudflare アカウント(API Token 作成権限)。wrangler での手動デプロイがすでに成功している状態から始めます。
メモ
GitHub Actions で Cloudflare Workers への自動デプロイと手動デプロイを構築する方法を解説します。
workflow_dispatch の制約や concurrency 設定など、実際にハマったポイントも共有します。はじめに
Cloudflare Workers へのデプロイを手動で行うのは手間がかかります。GitHub Actions で以下を実現します。
developブランチへの push で dev 環境に自動デプロイ- Actions UI から任意のブランチを選んで手動デプロイ
1. ワークフロー定義
name: Deploy to Cloudflare Workers
on:
push:
branches:
- develop
workflow_dispatch: # 手動トリガー
jobs:
deploy:
name: Build & Deploy (dev)
runs-on: ubuntu-latest
timeout-minutes: 15
concurrency:
group: deploy-dev
cancel-in-progress: true
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup bun
uses: oven-sh/setup-bun@v2
- name: Install dependencies
run: bun install --frozen-lockfile
- name: Generate Prisma Client
run: bunx prisma generate
- name: Build (OpenNext for Cloudflare)
run: npx opennextjs-cloudflare build
- name: Deploy to Cloudflare Workers
run: npx wrangler deploy
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}2. GitHub Secrets の設定
GitHub CLI で設定できます。
# 値をタイプする(入力後に Ctrl-D)
gh secret set CLOUDFLARE_API_TOKEN
gh secret set CLOUDFLARE_ACCOUNT_ID注意
--body "トークン" で渡すと、シェルの履歴(.zsh_history など)にトークンがそのまま残ります。上のように引数なしで実行して標準入力から渡すか、gh secret set NAME < token.txt のようにファイル経由にしてください。Tips
Cloudflare API Token は Workers 用の権限 が必要です。Account Settings → API Tokens から「Edit Cloudflare Workers」テンプレートで作成しましょう。
3. concurrency 設定
concurrency ブロックが重要です。
concurrency:
group: deploy-dev
cancel-in-progress: truegroup: deploy-dev→ 同じグループのジョブは同時実行されないcancel-in-progress: true→ 新しい push があれば実行中のデプロイをキャンセル
4. workflow_dispatch の重要な制約
注意
workflow_dispatch トリガーは デフォルトブランチ(通常 main)にワークフローファイルが存在しないと、Actions UI に手動実行ボタンが表示されません。つまり、develop ブランチにのみワークフローがある状態では、UI から手動実行できません。まず main にワークフローファイルをマージする必要があります。
マージ後は UI から任意のブランチを選択してデプロイできるようになります。
5. ビルドステップのポイント
bun install --frozen-lockfile→ CI 環境での再現性を確保bunx prisma generate→ ビルド前に必須(Prisma Client の生成)timeout-minutes: 15→ ハングアップ防止
まとめ
developpush で自動デプロイ、workflow_dispatchで手動デプロイconcurrencyでデプロイ競合を防止workflow_dispatchは main にワークフローがないと UI に表示されない- Secrets は
gh secret setで設定できる。ただし値を引数で渡さない(履歴に残る)
参考リンク
更新履歴
- gh secret set --body でトークンを渡すとシェル履歴に残るため、標準入力経由の形に修正して注意を追記。コードブロックにファイルパスのキャプションを追加し、callout の色指定を他記事と揃えた。参考リンクの節を新設。「この記事でわかること」「対象読者」「前提条件」を概要プロパティへ移動。


