Skip to content

Commit 0829151

Browse files
yn1323claude
andcommitted
feat: CI/CDパイプラインの環境分離とConvexデプロイ追加
本番(main)とdev(develop/preview)でCloudFlare・Convexプロジェクトを分離し、 develop/mainプッシュ時にConvex自動デプロイを追加。 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 2d9ab3e commit 0829151

File tree

2 files changed

+112
-5
lines changed

2 files changed

+112
-5
lines changed

.github/CLAUDE.md

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
# .github/CLAUDE.md
2+
3+
CI/CDパイプラインの構成と運用ルール。
4+
5+
## ブランチ戦略
6+
7+
| ブランチ | 用途 | デプロイ先 |
8+
|---|---|---|
9+
| `main` | 本番環境 | CF `yps-crispy-carnival` + Convex `yps-crispy-carnival` |
10+
| `develop` | ステージング環境 | CF `dev-yps-crispy-carnival` + Convex `dev-yps-crispy-carnival` |
11+
| PR → develop | プレビュー環境 | CF `dev-yps-crispy-carnival` (branch: pr-{N}) + Convex preview(一時的) |
12+
13+
## 外部サービス構成
14+
15+
### CloudFlare Pages
16+
17+
2プロジェクト体制:
18+
- `yps-crispy-carnival` — 本番専用(mainブランチのみデプロイ)
19+
- `dev-yps-crispy-carnival` — 開発用(developのメインデプロイ + PRプレビュー)
20+
21+
### Convex
22+
23+
2プロジェクト体制:
24+
- `yps-crispy-carnival` — 本番DB
25+
- `dev-yps-crispy-carnival` — 開発DB(永続) + PRプレビュー環境(数日で自動消滅)
26+
27+
### Clerk
28+
29+
1アプリ・2モード:
30+
- 本番環境 → Clerk本番キー(Production環境シークレット)
31+
- 開発/プレビュー環境 → Clerk開発キー(Preview環境シークレット)
32+
33+
## GitHub Environments
34+
35+
シークレットはGitHub Environmentsで環境別に管理する。同じキー名で環境ごとに異なる値を設定。
36+
37+
### Preview 環境(develop + PRプレビューで使用)
38+
39+
| シークレット | 用途 |
40+
|---|---|
41+
| `CONVEX_DEPLOY_KEY` | dev Convexプロジェクトのデプロイキー |
42+
| `VITE_CONVEX_URL` | dev Convexの永続URL |
43+
| `VITE_CLERK_PUBLISHABLE_KEY` | Clerk開発用Publishableキー |
44+
| `CLERK_SECRET_KEY` | Clerk開発用シークレットキー |
45+
| `CLOUDFLARE_API_TOKEN` | CloudFlare APIトークン |
46+
| `CLOUDFLARE_ACCOUNT_ID` | CloudFlareアカウントID |
47+
48+
### Production 環境(mainで使用)
49+
50+
| シークレット | 用途 |
51+
|---|---|
52+
| `CONVEX_DEPLOY_KEY` | prod Convexプロジェクトのデプロイキー |
53+
| `VITE_CONVEX_URL` | prod Convexの永続URL |
54+
| `VITE_CLERK_PUBLISHABLE_KEY` | Clerk本番用Publishableキー |
55+
| `CLERK_SECRET_KEY` | Clerk本番用シークレットキー |
56+
| `CLOUDFLARE_API_TOKEN` | CloudFlare APIトークン |
57+
| `CLOUDFLARE_ACCOUNT_ID` | CloudFlareアカウントID |
58+
59+
## ワークフロー一覧
60+
61+
### デプロイ (`deploy.yml`)
62+
63+
| ジョブ | トリガー | 処理 |
64+
|---|---|---|
65+
| `deploy-preview` | PR to develop (open/sync) | Convex preview作成 → seed → ビルド → CF dev プレビューデプロイ |
66+
| `cleanup-preview` | PR to develop (close) | CF dev プレビュー削除 |
67+
| `deploy-develop` | push to develop | Convex devデプロイ → ビルド → CF dev メインデプロイ |
68+
| `deploy-production` | push to main | Convex prodデプロイ → ビルド → CF prod メインデプロイ |
69+
70+
### テスト・品質チェック
71+
72+
| ワークフロー | トリガー | 内容 |
73+
|---|---|---|
74+
| `lint.yml` | 全push | Biome lint |
75+
| `type-check.yml` | 全push | TypeScript型チェック |
76+
| `test-logic.yml` | 全push | ロジックテスト(sharding 2分割) |
77+
| `test-ui.yml` | 全push | UIテスト(sharding 2分割、Convex dev使用) |
78+
| `build.yml` | 全push | ビルド確認(Convex dev使用) |
79+
| `playwright.yml` | PR to develop | E2Eテスト(Convex preview使用) |
80+
81+
### Storybook (`chromatic_*.yml`)
82+
83+
| ワークフロー | トリガー | 内容 |
84+
|---|---|---|
85+
| `chromatic_pr_on_push.yml` | PR push(draft/renovate除外) | 変更コンポーネントのみChromatic公開 |
86+
| `chromatic_pr_on_ready.yml` | PR ready for review | 同上 |
87+
| `chromatic_merged.yml` | push to main/develop | ベースライン自動承認 |
88+
89+
## デプロイ順序
90+
91+
Convex → ビルド → CloudFlare の順で実行する。
92+
- Convexを先にデプロイすることで、スキーマ変更がビルド時に反映される
93+
- ビルド時に `VITE_CONVEX_URL` を環境変数として埋め込む
94+
95+
## 注意事項
96+
97+
- PRプレビューのConvex環境は数日で自動消滅するため、明示的な削除は不要
98+
- `build.yml``test-ui.yml``npx convex dev` でコード生成を行うため Preview 環境のシークレットが必要
99+
- E2Eテストはプレビュー環境(PR)でのみ実施

.github/workflows/deploy.yml

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ jobs:
4545
id: deploy
4646
run: |
4747
DEPLOY_OUTPUT=$(npx wrangler pages deploy dist \
48-
--project-name yps-crispy-carnival \
48+
--project-name dev-yps-crispy-carnival \
4949
--branch "pr-${{ github.event.pull_request.number }}" 2>&1)
5050
echo "$DEPLOY_OUTPUT"
5151
DEPLOY_URL=$(echo "$DEPLOY_OUTPUT" | grep -oP 'https://[^\s]+\.pages\.dev' | tail -1)
@@ -75,13 +75,13 @@ jobs:
7575
run: |
7676
DEPLOYMENTS=$(curl -s \
7777
-H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
78-
"https://api.cloudflare.com/client/v4/accounts/$CLOUDFLARE_ACCOUNT_ID/pages/projects/yps-crispy-carnival/deployments" \
78+
"https://api.cloudflare.com/client/v4/accounts/$CLOUDFLARE_ACCOUNT_ID/pages/projects/dev-yps-crispy-carnival/deployments" \
7979
| jq -r ".result[] | select(.deployment_trigger.metadata.branch == \"pr-${{ github.event.pull_request.number }}\") | .id")
8080
for ID in $DEPLOYMENTS; do
8181
echo "Deleting deployment $ID"
8282
curl -s -X DELETE \
8383
-H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
84-
"https://api.cloudflare.com/client/v4/accounts/$CLOUDFLARE_ACCOUNT_ID/pages/projects/yps-crispy-carnival/deployments/$ID?force=true"
84+
"https://api.cloudflare.com/client/v4/accounts/$CLOUDFLARE_ACCOUNT_ID/pages/projects/dev-yps-crispy-carnival/deployments/$ID?force=true"
8585
done
8686
env:
8787
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
@@ -95,6 +95,10 @@ jobs:
9595
- uses: actions/checkout@v6
9696
- name: Setup
9797
uses: ./.github/actions/setup
98+
- name: Deploy Convex
99+
run: npx convex deploy
100+
env:
101+
CONVEX_DEPLOY_KEY: ${{ secrets.CONVEX_DEPLOY_KEY }}
98102
- name: Build
99103
run: pnpm build
100104
env:
@@ -103,8 +107,8 @@ jobs:
103107
- name: Deploy to Cloudflare Pages
104108
run: |
105109
npx wrangler pages deploy dist \
106-
--project-name yps-crispy-carnival \
107-
--branch develop
110+
--project-name dev-yps-crispy-carnival \
111+
--branch main
108112
env:
109113
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
110114
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
@@ -117,6 +121,10 @@ jobs:
117121
- uses: actions/checkout@v6
118122
- name: Setup
119123
uses: ./.github/actions/setup
124+
- name: Deploy Convex
125+
run: npx convex deploy
126+
env:
127+
CONVEX_DEPLOY_KEY: ${{ secrets.CONVEX_DEPLOY_KEY }}
120128
- name: Build
121129
run: pnpm build
122130
env:

0 commit comments

Comments
 (0)