2.7.14 与 Renovate 配合使用

原文链接: https://docs.astral.sh/uv/guides/integration/renovate/

2.7.14 与 Renovate 配合使用

定期更新依赖被认为是最佳实践,可以避免暴露于漏洞、减少依赖之间的不兼容,并避免因版本过旧而导致的复杂升级。

uv 已得到 Renovate 的支持。

uv.lock 输出

Renovate 通过是否存在 uv.lock 文件来判断项目使用 uv 管理依赖,并会建议升级项目依赖、可选依赖和开发依赖。Renovate 会同时更新 pyproject.toml 和 uv.lock 文件。

通过启用 lockFileMaintenance 选项,还可以定期刷新锁文件(例如更新传递依赖):

1
2
3
4
5
6
7
// renovate.json5
{
  $schema: "https://docs.renovatebot.com/renovate-schema.json",
  lockFileMaintenance: {
    enabled: true,
  },
}

内联脚本元数据

Renovate 支持更新用内联脚本元数据定义的依赖。

由于它无法自动检测哪些 Python 文件使用了内联脚本元数据,需要通过 managerFilePatterns 显式定义它们的位置,例如:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
// renovate.json5
{
  $schema: "https://docs.renovatebot.com/renovate-schema.json",
  pep723: {
    managerFilePatterns: [
      "docs/build.py",
      "scripts/**/*.py",
    ],
  },
}

注意

Renovate 尚不支持更新与脚本关联的锁文件(https://github.com/renovatebot/renovate/issues/33591),因此如果你依赖该特性来管理脚本,就需要手动更新锁文件。

依赖冷却期

如果你使用了 exclude-newer 选项,建议在 Renovate 中也设置等价的 minimumReleaseAge 选项,以免出现 uv 无法锁定依赖的拉取请求。

例如,如果你把 exclude-newer 设置为 1 week,可以这样设置:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
// renovate.json5
{
  $schema: "https://docs.renovatebot.com/renovate-schema.json",

  // 仅对 PyPI 启用。
  packageRules: [
    {
      matchDatasources: ["pypi"],
      minimumReleaseAge: "1 week",
    },
  ],

  // 或者对所有生态启用。
  minimumReleaseAge: "1 week",
}
最后修改 September 25, 2026: 更新 (221c74c33)