Renovate 怎么配置 prCreation 让测试通过后再创建 PR
【免费下载链接】renovateHome of the Renovate CLI: Cross-platform Dependency Automation by Mend.io项目地址: https://gitcode.com/GitHub_Trending/re/renovate
Renovate 自动更新仓库依赖时,默认的prCreation=immediate会在分支创建后立即开出 PR,你得自己等 CI 结果出来才能判断是否合并。如果希望"测试通过之后才出现 PR",可以把配置项prCreation设为status-success。本文说明这个配置的写法,以及如何验证配置生效,并给出测试未全部通过时not-pending的替代行为。
选择 prCreation 的取值
prCreation决定 Renovate "何时"创建 PR,共有四个取值(见 configuration-options.md):
| 取值 | 行为 |
|---|---|
immediate(默认) | 分支创建后立即创建 PR |
status-success | 所有测试通过后才创建 PR |
not-pending | 等所有 status check 出结果(通过或失败)后创建 PR |
approval | 分支立即创建,PR 等 Dependency Dashboard 批准后创建 |
对应"测试通过后再创建 PR"这个目标,FAQ 给出两种选法:
- 只要测试全部通过才想要 PR:设
prCreation为status-success。测试失败的分支会留在 Git 里、按需更新,Renovate 只在测试通过后创建 PR。 - 测试跑完(无论成败)就想要 PR、拿到通知时能直接看到完整测试结果:设
prCreation为not-pending。
在哪里配置
Renovate 会从配置文件(如renovate.json)以及每个package.json中查找配置选项。在仓库的renovate.json中加入prCreation字段:
{ "prCreation": "status-success" }如果你接受"测试出结果(含失败)后再开 PR",则改为:
{ "prCreation": "not-pending" }验证配置
所有 Renovate 发行版都包含独立的校验程序renovate-config-validator,运行方式见 config-validation.md:
$ npx --yes --package renovate -- renovate-config-validator校验通过时文档给出的示例输出为:
INFO: Validating renovate.json INFO: Config validated successfully测试结束后的实际行为
对所有非immediate的 PR 创建模式,Renovate 并不会在测试完成的瞬间立刻动作,而是在相关测试完成后的下一次运行时创建 PR,因此存在一定的延迟。
如果status-success模式下某个分支的测试失败,该分支不会关联 PR,但会保留在 Git 中并在需要时更新。你要把修复推送到该分支时,操作路径是:从 Dependency Dashboard 选中对应的 PR,然后把修复推送到分支。这条路径依赖 Dependency Dashboard,若未开启可配置启用(见 dashboard.md):
{ "dependencyDashboard": true }边界与已知限制
not-pending可能一直不创建 PR:没有任何外部 status check 的分支会一直被报告为pending,于是not-pending永远等不到检查"完成",只能回退到prNotPendingHours(默认 25 小时)。该计时从分支的最新 commit起算,rebase、重新锁定等操作都会重置计时;如果仓库的分支被 rebase 或 re-lock 的频率高于这个阈值,PR 会被无限推迟。这在 CI 只在pull_request事件上运行时尤其常见,因为裸 Renovate 分支上根本没有检查。文档给出的应对:如果你依赖minimumReleaseAge/internalChecksFilter来实现"等待"行为,设internalChecksAsSuccess=true让绿色的内部稳定性检查也算作成功;否则改用prCreation=immediate。minimumReleaseAge非零时,prNotPendingHours功能会被禁用。- 避免同时设置
rebaseWhen=never和prCreation=not-pending,文档指出该组合可能导致 PR 无法创建。 - 若使用
prCreation=approval,必须不要同时使用dependencyDashboardApproval=true。
相关文档
prCreation选项说明- Minimum Release Age(说明
internalChecksFilter与prCreation的配合) - Dependency Dashboard
【免费下载链接】renovateHome of the Renovate CLI: Cross-platform Dependency Automation by Mend.io项目地址: https://gitcode.com/GitHub_Trending/re/renovate
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考