
【設定・環境構築】GitHub Actions で Cloudflare Workers への CI/CD パイプラインを構築する
workflow_dispatch の制約や concurrency 設定など、実際にハマったポイントも共有します。はじめに
Cloudflare Workers へのデプロイを手動で行うのは手間がかかります。GitHub Actions で以下を実現します。
-
developブランチへの push で dev 環境に自動デプロイ -
Actions UI から任意のブランチを選んで手動デプロイ
この記事でわかること
-
GitHub Actions ワークフローの完全な定義例
-
workflow_dispatch(手動トリガー)の重要な制約 -
concurrencyによるデプロイ競合防止 -
GitHub Secrets の設定方法
対象読者
-
Cloudflare Workers への CI/CD を構築したい方
-
GitHub Actions の
workflow_dispatchの挙動を理解したい方
前提条件
-
GitHub リポジトリ
-
Cloudflare アカウント + API Token
-
wrangler での手動デプロイが成功している状態
1. ワークフロー定義
# .github/workflows/deploy.yml
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 で設定できます。
gh secret set CLOUDFLARE_API_TOKEN --body "your-api-token"
gh secret set CLOUDFLARE_ACCOUNT_ID --body "your-account-id"
3. concurrency 設定
concurrency ブロックが重要です。
concurrency:
group: deploy-dev
cancel-in-progress: true
-
group: 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で簡単に設定可能
最新記事
- 【設定・環境構築】OpenNext でNext.js SSGサイトをCloudflare Workersにデプロイする完全ガイド
2026/3/19
- 【実装】Notion calloutブロックをNext.jsでカラフルなUIコンポーネントとして表示する
2026/3/19
- 【トラブルシューティング】Cloudflare Pages → Workers 移行で遭遇したEdge Runtime問題集
2026/3/19
- 【実践】Next.js 13→16メジャーアップグレードの全記録 — 破壊的変更と対応策
2026/3/19
- 【自動化】Gemini Imagen APIでブログのeyecatch画像を自動生成してR2にアップロードする
2026/3/19
- 【実装】Notion APIでブログシステムを構築する(Next.js 13 App Router × SDK v5)
2026/3/19
- 【移行ガイド】microCMSからNotion APIへブログCMSを完全移行する
2026/3/19
- 【トラブルシューティング】本番デプロイで遭遇した問題と解決策まとめ
2026/3/15
- 【環境構築】Next.js × Cloudflare Workers の本番環境を一から構築する
2026/3/15
- 【設定・環境構築】Neon → Prisma Postgres 移行とローカル開発環境の構築
2026/2/26


