关于 deploy-pipeline
deploy-pipeline 是面向跨 Stripe、Supabase 和 Vercel 发布变更团队的命令行技能。它按顺序协调计费、数据库迁移、部署、验证和通知,并提供回滚指引。
主要功能
- 01按序发布 Stripe、Supabase 和 Vercel
- 02创建或更新计费价格
- 03执行 Supabase 迁移并检查架构
- 04部署并提升 Vercel 版本
- 05运行冒烟检查并发送 Slack 通知
- 06提供逆序回滚指引
适用场景
- 01协调涉及计费、数据库和前端的产品发布
- 02同步提升预览版本、调整价格并执行迁移
- 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_PRODUCTSTRIPE_CREATE_PRICESTRIPE_UPDATE_PRODUCTSTRIPE_LIST_PRICES
Supabase
SUPABASE_LIST_PROJECTSSUPABASE_RUN_SQL_QUERYSUPABASE_LIST_MIGRATIONSSUPABASE_APPLY_MIGRATION
Vercel
VERCEL_CREATE_A_NEW_DEPLOYMENTVERCEL_GET_A_DEPLOYMENT_BY_ID_OR_URLVERCEL_LIST_DEPLOYMENTSVERCEL_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}.`
});
回滚计划
如果验证失败,请按相反顺序撤销:
- Vercel:使用之前的部署 ID 调用
VERCEL_PROMOTE_DEPLOYMENT。 - Supabase:应用向下迁移(发布前务必编写配套的
down.sql)。 - Stripe:调用
STRIPE_UPDATE_PRODUCT隐藏新价格(active:false);不要删除——实际操作中,Stripe 对象不可变,且会影响历史发票。 - 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