mcpField
D
deploy-pipeline

deploy-pipeline

github.com/composio-communityクラウド・DevOps17.1k474 回インストール14 週間前に更新
リポジトリ

deploy-pipeline について

deploy-pipelineは、Stripe、Supabase、Vercelをまたぐ変更をリリースするチーム向けのコマンドラインスキルです。課金、データベース移行、デプロイ、検証、告知を順に進め、ロールバック手順も示します。

主な機能

  1. 01Stripe、Supabase、Vercelの順次リリース
  2. 02課金価格の作成・更新
  3. 03Supabaseの移行とスキーマ確認
  4. 04Vercelのデプロイと昇格
  5. 05スモークテストとSlackでの告知
  6. 06逆順でのロールバック手順

活用シーン

  1. 01課金・データベース・フロントエンドにまたがるリリース
  2. 02プレビュー版の昇格と価格変更、移行の同時実施
  3. 03毎週のリリース手順の反復

MCP 対応

このスキルはComposio CLIを使い、Stripe、Supabase、Vercel、および任意でSlackの操作を実行します。入力にはMCPとの連携について記載がありません。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/composio-community/awesome-codex-skills --skill deploy-pipeline

インストール後、Claude Code で/deploy-pipelineを入力して読み込まれたか確認します。

詳細

デプロイパイプライン(Stripe/Supabase/Vercel)

Composio CLI を使って、シェルから Stripe、Supabase、Vercel 間の段階的なリリースを調整します。1 つのスクリプトで、プロダクト/価格の更新、データベースのマイグレーション、フロントエンドのデプロイ、スモークテスト、変更履歴の投稿まで、一連の「リリース」手順を実行できます。

使用する場面

  • 課金、データベース、フロントエンドをまとめて変更するフルスタックのプロダクトローンチ。
  • Stripe の価格切り替えと Supabase のマイグレーションを行い、Vercel のプレビュービルドを本番環境に昇格させる場合。
  • 同じ手順を定期的に繰り返し、信頼性を高めたい週次リリース。

前提条件

curl -fsSL https://composio.dev/install | bash
composio login
composio link stripe
composio link supabase
composio link vercel
composio link slack        # for release announcements

ツールを確認する

composio search "create price" --toolkits stripe
composio search "apply migration" --toolkits supabase
composio search "create deployment" --toolkits vercel
composio tools list stripe
composio tools list supabase
composio tools list vercel

よく使われるスラッグ(--get-schema で確認してください):

Stripe

  • STRIPE_CREATE_PRODUCT
  • STRIPE_CREATE_PRICE
  • STRIPE_UPDATE_PRODUCT
  • STRIPE_LIST_PRICES

Supabase

  • SUPABASE_LIST_PROJECTS
  • SUPABASE_RUN_SQL_QUERY
  • SUPABASE_LIST_MIGRATIONS
  • SUPABASE_APPLY_MIGRATION

Vercel

  • VERCEL_CREATE_A_NEW_DEPLOYMENT
  • VERCEL_GET_A_DEPLOYMENT_BY_ID_OR_URL
  • VERCEL_LIST_DEPLOYMENTS
  • VERCEL_PROMOTE_DEPLOYMENT

パイプライン

順序が重要です:Stripe → Supabase → Vercel → 検証 → 告知。 課金の変更をデータベースより先に、データベースの変更をフロントエンドより先に行います。

1. Stripe:価格を作成または更新する
composio execute STRIPE_CREATE_PRICE -d '{
  "product":"prod_abc123",
  "unit_amount":2900,
  "currency":"usd",
  "recurring":{"interval":"month"},
  "lookup_key":"team-plan-v2"
}'
2. Supabase:マイグレーションを適用する
composio execute SUPABASE_APPLY_MIGRATION -d '{
  "project_id":"abcxyz",
  "name":"add_team_tier_column",
  "query":"alter table teams add column tier text default '\''free'\'';"
}'

適用後にスキーマをチェックします:

composio execute SUPABASE_RUN_SQL_QUERY -d '{
  "project_id":"abcxyz",
  "query":"select column_name from information_schema.columns where table_name='\''teams'\'' and column_name='\''tier'\'';"
}'
3. Vercel:デプロイして昇格させる
# Trigger a production deployment from a git ref
composio execute VERCEL_CREATE_A_NEW_DEPLOYMENT -d '{
  "name":"web",
  "target":"production",
  "gitSource":{"type":"github","ref":"main","repoId":123456}
}'

準備完了になるまでポーリングします:

composio execute VERCEL_GET_A_DEPLOYMENT_BY_ID_OR_URL -d '{"idOrUrl":"dpl_xxx"}' \
  | jq '.readyState'
4. 検証する
curl -fsS https://app.acme.com/api/health
composio execute SUPABASE_RUN_SQL_QUERY -d '{
  "project_id":"abcxyz","query":"select count(*) from teams where tier is null;"
}'
5. 告知する
composio execute SLACK_SEND_MESSAGE -d '{
  "channel":"releases",
  "text":"✅ Team Plan v2 shipped. Stripe price `team-plan-v2` live, Supabase migration applied, Vercel production promoted."
}'

ワークフローファイルとしてのパイプライン

composio run --file scripts/ship.ts -- --ref main で実行する scripts/ship.ts:

const ref = process.argv[process.argv.indexOf("--ref") + 1] ?? "main";

// 1. Stripe
const price = await execute("STRIPE_CREATE_PRICE", {
  product: "prod_abc123", unit_amount: 2900, currency: "usd",
  recurring: { interval: "month" }, lookup_key: "team-plan-v2"
});

// 2. Supabase
await execute("SUPABASE_APPLY_MIGRATION", {
  project_id: "abcxyz",
  name: "add_team_tier_column",
  query: "alter table teams add column tier text default 'free';"
});

// 3. Vercel
const dep = await execute("VERCEL_CREATE_A_NEW_DEPLOYMENT", {
  name: "web", target: "production",
  gitSource: { type: "github", ref, repoId: 123456 }
});

// 4. Wait for ready
let state = "QUEUED";
while (state !== "READY" && state !== "ERROR") {
  await new Promise(r => setTimeout(r, 4000));
  const d = await execute("VERCEL_GET_A_DEPLOYMENT_BY_ID_OR_URL", { idOrUrl: dep.id });
  state = d.readyState;
}

if (state !== "READY") throw new Error("Vercel deploy failed");

// 5. Announce
await execute("SLACK_SEND_MESSAGE", {
  channel: "releases",
  text: `✅ Shipped ${ref}. Stripe price ${price.id}, Vercel ${dep.url}.`
});

ロールバック計画

検証に失敗した場合は、逆の順序で元に戻します:

  1. Vercel:以前のデプロイ ID を指定して VERCEL_PROMOTE_DEPLOYMENT を実行します。
  2. Supabase:ダウンマイグレーションを適用します(リリース前に必ず対応する down.sql を作成してください)。
  3. Stripe:STRIPE_UPDATE_PRODUCT を使い、新しい価格を非表示にします(active:false)。削除はしないでください。Stripe オブジェクトは実質的に不変で、過去の請求書にも影響するためです。
  4. Slack:ロールバックを告知します。

トラブルシューティング

  • Stripe の価格は表示されるが、チェックアウトには古い価格が表示される → アプリ側のキャッシュが原因です。チェックアウトで取得している lookup_key を確認してください。
  • Supabase のマイグレーションが停止する → 別の接続がロックを保持しています。select pid, state, query from pg_stat_activity where state <> 'idle'; を実行してください。
  • Vercel のデプロイが QUEUED のまま停止する → ?logs=1 を付けて VERCEL_GET_A_DEPLOYMENT_BY_ID_OR_URL を実行し、ビルドログを確認してください。
  • 順序に関する不具合(マイグレーションが適用される前にフロントエンドがカラムを読み込む)→ パイプラインは必ず順番に実行してください。Stripe、Supabase、Vercel をまたいで --parallel を使わないでください。

CLI のリファレンス全文:docs.composio.dev/docs/cli

コメント