mcpField
D
deploy-pipeline

deploy-pipeline

github.com/composio-community云与 DevOps17.1k474 次安装14 周前更新
代码仓库

关于 deploy-pipeline

deploy-pipeline 是面向跨 Stripe、Supabase 和 Vercel 发布变更团队的命令行技能。它按顺序协调计费、数据库迁移、部署、验证和通知,并提供回滚指引。

主要功能

  1. 01按序发布 Stripe、Supabase 和 Vercel
  2. 02创建或更新计费价格
  3. 03执行 Supabase 迁移并检查架构
  4. 04部署并提升 Vercel 版本
  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 的分阶段发布。只需一个脚本,就能启动整套“发布”流程:更新产品/价格、执行数据库迁移、部署前端、运行冒烟测试并发布变更日志。

适用场景

  • 同时涉及计费、数据库和前端的全栈产品发布。
  • 将 Vercel 预览构建推送到生产环境,同时切换 Stripe 价格并执行 Supabase 迁移。
  • 每周重复相同发布流程,希望流程稳定可靠。

前置条件

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

常用 slug(使用 --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."
}'

将流水线编写为工作流文件

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. 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

评论

支持 Markdown