Introducing Vercel CI
TL;DR · AI 摘要
Vercel CI通过智能任务执行和缓存机制,将CI流程加速2-6倍,基于Turborepo实现精准构建。
核心要点
- 使用Turborepo的tags机制标记CI任务,无需维护YAML配置文件
- Hive计算层实现按需分配资源,任务执行时间缩短至原1/6
- 已处理800万次CI任务,支持GitHub PR状态检查和分布式执行
结构提纲
按章节快速跳转。
思维导图
用一张图看清主题之间的关系。
查看大纲文本(无障碍 / 无 JS 友好)
- Vercel CI
- 核心机制
- Turborepo任务分析
- Hive动态资源分配
- 缓存复用策略
- 使用方式
- turbo.json配置
- vc ci CLI工具
- GitHub集成
- 未来功能
- 分布式预执行
- 高级可观测性
- 智能测试选择
金句 / Highlights
值得收藏与分享的关键句。
Vercel CI通过Turborepo识别任务依赖,仅运行受影响的代码变更任务。
使用Hive计算层按需分配资源,任务执行时间缩短至原1/6。
已处理800万次CI任务,GitHub PR状态检查支持现有分支保护规则。
介绍 Vercel CI - Vercel
代码代理现在比以往任何时候都在创建更多的拉取请求,而每个请求都必须等待 CI 完成后才能进行审查或合并。大多数 CI 系统会在每次推送时运行整个工作流程,即使是单行更改也是如此。代理推送的代码越多,等待 CI 的时间就越长。
今天,我们宣布 Vercel CI 正式进入 Beta 阶段。它只会运行受代码更改影响的任务,并且仅启动这些检查所需的计算资源,就像 Fluid 计算根据流量进行扩展一样。
在 Vercel,我们的 CI 现在能够跟上我们的开发代理的节奏。从 git 推送代码到 "CI 通过" 的时间比以前快了 2-6 倍。
复制链接到标题 工作原理
Vercel CI 使用 Turborepo 来理解你的任务以及它们之间的依赖关系。它读取 turbo.json,因此如果你已经在使用 Turborepo,就不需要编写单独的 CI 配置。
如果你尚未使用 Turborepo,请添加 turbo.json 和 turbo 包。它同样适用于单包仓库。
然后标记你希望 Vercel CI 运行的任务。
turbo.json
1
{
2
"tasks"
:
{
3
"lint"
:
{
4
"tags"
:
[
"ci"
]
5
}
6
}
7
}"tags": ["ci"] 是你开始所需的全部内容。无需维护工作流 YAML,CI 配置与 turbo.json 之间不会出现偏差,远程缓存默认开启。
当你或你的代理推送代码时,Vercel CI 会根据更改确定需要运行哪些任务。输入未更改的任务将从缓存中获取。剩余任务各自在自己的机器上运行,由 Hive(Vercel 的计算层)提供支持,并在依赖项完成后立即启动。
Vercel CI 为每个任务提供所需的计算资源,不多也不少。
复制链接到标题 在 Vercel 上运行 CI
要开始使用,请遵循文档说明或从你的仓库中提示代理:
提示编码代理
为这个仓库设置 Vercel CI。运行 npx skills use vercel/ci@setup 并按照技能的说明选择初始任务、配置 Vercel CI 并打开拉取请求。
设置完成后,你或你的代理可以通过 Vercel 仪表板、Vercel CLI 或 Vercel MCP 查看和检查 CI。当某项失败时,可以直接跳转到失败的任务,查看其背后的阻塞问题,打开其日志,或搜索最近的运行记录以查看测试是否整周都存在不稳定情况。
终端
1
vc ci
ls
# 列出仓库的 CI 运行记录
2
vc ci inspect
<
run
>
# 列出运行中的任务
3
vc ci logs
<
run
>
# 获取运行中所有任务的日志
4
vc ci logs
<
run
>
--task
web
#test --level=error # 获取特定任务的 stderr
5
vc ci
grep
"WARNING"
# 在运行日志中搜索字符串Vercel CI 会在 GitHub 的拉取请求上发布一个检查,因此你现有的分支保护规则可以在失败时阻止合并,就像现在一样。
复制链接到标题 闭环
Vercel CI 已经在我们自己的仓库和私有 Beta 版本中完成了近 800 万次任务,我们才刚刚开始。我们正在努力缩短代码编写和在生产环境中运行之间的时间。
随着我们向全面可用性迈进,我们计划添加:
- 高级可观测性
- 用于在推送代码前进行分布式执行的
vc ciCLI 命令 - 更精细的测试选择
Vercel CI 今天在所有计划中都可使用 Beta 版本。阅读文档并在你的仓库中尝试它。
贡献者
William Bout, Mitul Shah, Vojtech Miksu, Mehul Kar, Kevin Sundstrom