返回首页 访问原文
Vercel CI
介绍
Vercel CI 是 Vercel 推出的持续集成(CI)服务,于 2026 年 10 月 28 日进入公测,所有套餐都可使用。它基于 Turborepo:读取 turbo.json 里的任务依赖图,只运行这次 push 可能影响到的任务,其余结果直接从远程缓存恢复,并给每个任务分配一台大小合适的独立机器。Vercel 做它的原因是:编程智能体开的 PR 越来越多,每个都要排队等 CI。
官方文章:Introducing Vercel CI · 更新日志:Vercel CI is now in beta · 文档:vercel.com/docs/ci
解释
要点
- 只做必要的工作:大多数 CI 每次 push 都会把整个流程重跑一遍,哪怕只改了一行。Vercel CI 根据 Turborepo 任务图跳过输入没有变化的任务。Vercel 的 Malte Ubl(@cramforce)在 X 上的说法是:“只改了后端?那就不用给前端跑 lint。”
- 不用写工作流 YAML:只需在
turbo.json中给任务加上"tags": ["ci"],不存在单独的 CI 配置和构建系统不同步的问题,远程缓存默认开启。 - 按任务分配算力:剩下要跑的任务各自在独立机器上运行,由 Vercel 的计算层 Hive 提供,依赖一完成就立刻开始;依赖包每次运行只装一次,并在多次 push 之间缓存。
- 速度数据:Vercel 称其内部仓库从 push 到“CI 通过”的时间快了 2–6 倍,在自家仓库和内测中已累计运行近 800 万个任务。
- 要求与限制:需要 Turborepo 2.11.7+ 和 Vercel CLI 64.3.1+;公测阶段只支持 GitHub 仓库、Linux 和 git push 触发。X 上的早期测试者指出,按分钟计费比 GitHub 自带 runner 贵,省钱主要靠少跑任务。
- 后续计划:正式版前会加入更完善的可观测性、可在 push 前分布式执行的
vc ci命令,以及更细粒度的测试选择。
用法
如何开始
- 确认仓库使用 Turborepo(没有的话添加
turbo.json和turbo包,单包仓库也可以用)。 - 给想在 CI 中运行的任务打标签:
{
"tasks": {
"lint": { "tags": ["ci"] }
}
}
- 推送代码。每个带
ci标签的任务都会在 push 时运行,但只在受改动影响时才会真正执行。
Vercel 还建议直接让编程智能体完成配置:“Set up Vercel CI for this repository. Run npx skills use vercel/ci@setup and follow the skill's instructions.”
适用场景
- 大多数提交只改动一个包的 monorepo
- 编程智能体会开大量小 PR 的团队
- 已经在用 Turborepo 远程缓存的项目
小贴士
切换前先拿几个真实提交和现有 CI 对比:有早期测试者测得 35 秒 vs 96 秒,但主要是因为 10 个任务里有 9 个直接命中了缓存。