CI/CDパイプラインの構成と運用ルール。
| ブランチ | 用途 | デプロイ先 | トリガー |
|---|---|---|---|
main |
本番環境 | CF yps-crispy-carnival + Convex yps-crispy-carnival |
release:* ラベル付き PR のマージ時のみ |
develop |
ステージング環境 | CF dev-yps-crispy-carnival + Convex dev-yps-crispy-carnival |
push 毎 |
| PR → develop | プレビュー環境 | CF dev-yps-crispy-carnival (branch: pr-{N}) + Convex preview(一時的) |
PR open/sync |
main への本番デプロイは PR に以下のいずれかのラベルを付けてマージしたときのみ実行される。
| ラベル | 挙動 |
|---|---|
release:major |
npm version major(例: 1.2.3 → 2.0.0) |
release:minor |
npm version minor(例: 1.2.3 → 1.3.0) |
release:patch |
npm version patch(例: 1.2.3 → 1.2.4) |
ラベルなしでマージした場合はデプロイされない(release.yml が skip される)。
2プロジェクト体制:
yps-crispy-carnival— 本番専用(mainブランチのみデプロイ)dev-yps-crispy-carnival— 開発用(developのメインデプロイ + PRプレビュー)
2プロジェクト体制:
yps-crispy-carnival— 本番DBdev-yps-crispy-carnival— 開発DB(永続) + PRプレビュー環境(数日で自動消滅)
1アプリ・2モード:
- 本番環境 → Clerk本番キー(Production環境シークレット)
- 開発/プレビュー環境 → Clerk開発キー(Preview環境シークレット)
シークレットはGitHub Environmentsで環境別に管理する。同じキー名で環境ごとに異なる値を設定。
| シークレット | 用途 |
|---|---|
CONVEX_DEPLOY_KEY |
dev Convexプロジェクトのデプロイキー |
VITE_CONVEX_URL |
dev Convexの永続URL |
VITE_CLERK_PUBLISHABLE_KEY |
Clerk開発用Publishableキー |
CLERK_SECRET_KEY |
Clerk開発用シークレットキー |
CLOUDFLARE_API_TOKEN |
CloudFlare APIトークン |
CLOUDFLARE_ACCOUNT_ID |
CloudFlareアカウントID |
| シークレット | 用途 |
|---|---|
CONVEX_DEPLOY_KEY |
dev Convexプロジェクトのデプロイキー |
VITE_CONVEX_URL |
dev Convexの永続URL |
VITE_CLERK_PUBLISHABLE_KEY |
Clerk開発用Publishableキー |
CLERK_SECRET_KEY |
Clerk開発用シークレットキー |
CLOUDFLARE_API_TOKEN |
CloudFlare APIトークン |
CLOUDFLARE_ACCOUNT_ID |
CloudFlareアカウントID |
| シークレット | 用途 |
|---|---|
CONVEX_DEPLOY_KEY |
prod Convexプロジェクトのデプロイキー |
VITE_CONVEX_URL |
prod Convexの永続URL |
VITE_CLERK_PUBLISHABLE_KEY |
Clerk本番用Publishableキー |
CLERK_SECRET_KEY |
Clerk本番用シークレットキー |
CLOUDFLARE_API_TOKEN |
CloudFlare APIトークン |
CLOUDFLARE_ACCOUNT_ID |
CloudFlareアカウントID |
| ジョブ | トリガー | 処理 |
|---|---|---|
deploy-preview |
PR to develop (open/sync) | Convex preview作成 → seed → ビルド → CF dev プレビューデプロイ |
cleanup-preview |
PR to develop (close) | CF dev プレビュー削除 |
deploy-develop |
push to develop | Convex devデプロイ → ビルド → CF dev メインデプロイ |
| ジョブ | トリガー | 処理 |
|---|---|---|
release |
PR merged to main w/ release:* ラベル |
version bump → commit + tag push → Convex prodデプロイ → ビルド → CF prodデプロイ → GitHub Release作成 |
バージョン bump コミットは github-actions[bot] が main に直 push する。main に branch protection がある場合は bot を bypass 許可するか PAT を用意する必要がある。
| ワークフロー | トリガー | 内容 |
|---|---|---|
lint.yml |
全push | Biome lint |
type-check.yml |
全push | TypeScript型チェック |
test-logic.yml |
全push | ロジックテスト(sharding 2分割) |
test-ui.yml |
全push | UIテスト(sharding 2分割、Convex dev使用) |
build.yml |
全push | ビルド確認(Convex dev使用) |
playwright.yml |
PR to develop | E2Eテスト(Convex preview使用) |
| ワークフロー | トリガー | 内容 |
|---|---|---|
chromatic_pr_on_push.yml |
PR push(draft/renovate除外) | 変更コンポーネントのみChromatic公開 |
chromatic_pr_on_ready.yml |
PR ready for review | 同上 |
chromatic_merged.yml |
push to main/develop | ベースライン自動承認 |
Convex deploy → Convex migrations → ビルド → CloudFlare の順で実行する。
- Convex を先にデプロイすることで、スキーマ変更がビルド時に反映される
convex deploy直後にnpx convex run migrations/index:runを実行し、データのバックフィルを完了させてからビルドに進む(develop / release のみ、preview は実行しない)- マイグレーションは
@convex-dev/migrationsで冪等に管理されるため、変更のない PR でも毎回走る(完了済みはスキップされる) - ビルド時に
VITE_CONVEX_URLを環境変数として埋め込む
- PRプレビューのConvex環境は数日で自動消滅するため、明示的な削除は不要
build.ymlとtest-ui.ymlはnpx convex devでコード生成を行うため Preview 環境のシークレットが必要- E2Eテストはプレビュー環境(PR)でのみ実施