Community코딩 & 개발github.com

ComposioHQ/deploy-pipeline

Composio CLI를 사용하여 Stripe, Supabase, Vercel 전반에 걸친 엔드투엔드 배포 파이프라인을 실행합니다. Stripe 제품 프로모션, Supabase 마이그레이션 푸시, Vercel 배포, 사후 배포 확인까지 하나의 스크립트로 처리합니다.

deploy-pipeline란 무엇인가요?

이 스킬은 Composio CLI를 기반으로 Stripe(결제), Supabase(데이터베이스), Vercel(프론트엔드) 세 플랫폼에 걸친 단계적 릴리스를 하나의 스크립트로 조정합니다. 개발자는 'Stripe → Supabase → Vercel → 검증 → 알림' 순서로 실행되는 파이프라인을 통해 제품/가격 업데이트, DB 마이그레이션, 프론트엔드 배포, 상태 확인, Slack 알림까지 자동화할 수 있습니다. 풀스택 제품 출시, 주간 릴리스 트레인, 프로덕션 승격 등 반복적인 배포 작업에서 유용하며, 선언적 워크플로 파일로도 작성할 수 있습니다. 실패 시 역순으로 롤백하는 전략을 제공하여 안정성을 보장합니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/ComposioHQ/awesome-codex-skills/tree/main/deploy-pipeline

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

배포 파이프라인 (Stripe / Supabase / Vercel)

Composio CLI를 사용하여 Stripe, Supabase, Vercel 전반에 걸친 단계적 릴리스를 쉘에서 조정합니다. 단일 스크립트로 전체 '출시' 시퀀스(제품/가격 업데이트, DB 마이그레이션, 프론트엔드 배포, 스모크 테스트, 체인지로그 게시)를 시작합니다.

사용 시기

  • 결제, 데이터베이스, 프론트엔드를 함께 변경하는 풀스택 제품 출시.
  • Stripe 가격 변경 및 Supabase 마이그레이션과 함께 Vercel 프리뷰 빌드를 프로덕션으로 승격.
  • 동일한 시퀀스가 반복되어 안정성이 필요한 주간 릴리스 트레인.

사전 요구 사항

curl -fsSL https://composio.dev/install | bash
composio login
composio link stripe
composio link supabase
composio link vercel
composio link slack        # 릴리스 공지용

도구 검색

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 → 검증 → 알림. 결제 변경은 DB보다 먼저, DB는 프론트엔드보다 먼저.

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: 배포 + 승격

# 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 출시됨. Stripe 가격 `team-plan-v2` 활성화, Supabase 마이그레이션 적용됨, Vercel 프로덕션 승격됨."
}'

파이프라인을 워크플로 파일로

scripts/ship.ts, composio run --file scripts/ship.ts -- --ref main으로 실행:

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. 준비 완료까지 대기
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 배포 실패");

// 5. 알림
await execute("SLACK_SEND_MESSAGE", {
  channel: "releases",
  text: `✅ ${ref} 출시됨. Stripe 가격 ${price.id}, Vercel ${dep.url}.`
});

롤백 계획

검증에 실패하면 역순으로 되돌립니다:

  1. Vercel: VERCEL_PROMOTE_DEPLOYMENT로 이전 배포 ID로 승격.
  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에서 멈춤 → VERCEL_GET_A_DEPLOYMENT_BY_ID_OR_URL에 ?logs=1을 추가하여 빌드 로그 확인.
  • 순서 버그 (프론트엔드가 마이그레이션 적용 전에 컬럼을 읽음) → 항상 파이프라인을 직렬화; Stripe/Supabase/Vercel 간에 --parallel을 절대 사용하지 마세요.

전체 CLI 참조: docs.composio.dev/docs/cli

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

ComposioHQ/-21risk-automation

Automate 21risk tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/-2chat-automation

Automate 2chat tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/ably-automation

Automate Ably tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/abstract-automation

Automate Abstract tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/abuselpdb-automation

Automate Abuselpdb tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/abyssale-automation

Automate Abyssale tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/accelo-automation

Automate Accelo tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/accredible-certificates-automation

Automate Accredible Certificates tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/acculynx-automation

Automate Acculynx tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/active-campaign-automation

Automate ActiveCampaign tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/addresszen-automation

Automate Addresszen tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/adobe-automation

Automate Adobe tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/adrapid-automation

Automate Adrapid tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/adyntel-automation

Automate Adyntel tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/aeroleads-automation

Automate Aeroleads tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/aero-workflow-automation

Automate Aero Workflow tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/affinda-automation

Automate Affinda tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/affinity-automation

Automate Affinity tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/agencyzoom-automation

Automate Agencyzoom tasks via Rube MCP (Composio). Always search tools first for current schemas.

ComposioHQ/agent-deep-links

Build, validate, and troubleshoot deep links for Codex, Cursor, VS Code, Visual Studio, and similar tools. Use when users ask for clickable links (especially in Slack) that open threads, files, folders, or app settings.

관련 스킬