跳转至

Renovate依赖更新 — 自动化依赖更新

一句话概述:Renovate 是自动化依赖更新机器人,自动检测项目中过时的依赖并创建 PR 来更新它们,支持 90+ 种包管理器,让依赖维护从手动苦力变成自动化流程。

核心知识点速查表

概念白话解释
Renovate Bot自动扫描你的代码仓库,发现过时依赖就提 PR
renovate.json配置文件,定义更新策略(多久更新、自动合并规则等)
Merge Confidence合并信心指标,根据社区数据评估更新是否安全
Auto-merge满足条件的 PR 自动合并,无需人工干预
Grouping把多个相关依赖的更新合成一个 PR
Onboarding PR第一次启用时 Renovate 创建的配置 PR

当前版本信息(2026年)

信息详情
开发商Mend.io
支持平台GitHub、GitLab、Bitbucket、Azure DevOps
包管理器90+ 种
价格Community 版免费,Enterprise 版付费
官网https://www.mend.io/renovate
文档https://docs.renovatebot.com

安装配置

GitHub 上启用(推荐)

1. 访问 https://github.com/apps/renovate 安装 Renovate App
2. 选择要启用的仓库
3. Renovate 会自动创建一个 Onboarding PR(包含 renovate.json)
4. 合并 Onboarding PR 即可开始

配置文件

// renovate.json — 放在仓库根目录
{
  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
  "extends": [
    "config:recommended"      // 使用推荐配置(最佳实践)
  ],
  "schedule": [
    "every weekend"           // 每周末检查更新
  ],
  "labels": ["dependencies"], // 给 PR 打标签
  "automerge": true,          // 启用自动合并
  "automergeType": "pr",      // 通过 PR 合并(非直接 push)
  "platformAutomerge": true   // 使用平台的自动合并功能
}

高级配置示例

{
  "extends": ["config:recommended"],
  "schedule": ["after 9am and before 5pm every weekday"],

  "packageRules": [
    {
      "matchPackagePatterns": ["*"],
      "matchUpdateTypes": ["patch"],
      "automerge": true                // 补丁更新自动合并
    },
    {
      "matchPackagePatterns": ["*"],
      "matchUpdateTypes": ["minor"],
      "automerge": false               // 次版本更新需要人工审核
    },
    {
      "matchPackageNames": ["pytest", "ruff"],
      "groupName": "dev-tools",        // 开发工具合成一个 PR
      "automerge": true
    },
    {
      "matchPackagePatterns": ["eslint"],
      "enabled": false                 // 禁用 eslint 更新
    },
    {
      "matchDepTypes": ["devDependencies"],
      "automerge": true                // 开发依赖全部自动合并
    }
  ],

  "vulnerabilityAlerts": {
    "labels": ["security"],
    "automerge": true                  // 安全更新自动合并
  }
}

基本使用

Renovate 创建的 PR 示例

标题: Update dependency requests to v2.32.0

描述:
| Package  | Update | Change       |
|----------|--------|-------------|
| requests | minor  | 2.31.0 → 2.32.0 |

### Release Notes
- Added support for HTTP/3
- Fixed connection pooling issue
- Updated urllib3 dependency

### Merge Confidence
✅ Age: 30 days
✅ Adoption: 89%
✅ Passing: 98%
✅ Confidence: High

管理 PR

# Renovate PR 的互动命令(在 PR 评论中输入):
@renovate rebase           — 变基(解决冲突)
@renovate recreate         — 重新创建 PR
@renovate retry            — 重试失败的更新
@renovate close            — 关闭(这次不更新)

支持的包管理器(部分)

# Python
pip (requirements.txt, setup.py, setup.cfg)
pipenv (Pipfile)
poetry (pyproject.toml)
pip-compile (requirements.in)

# JavaScript/Node.js
npm (package.json)
yarn (yarn.lock)
pnpm (pnpm-lock.yaml)

# 其他
Docker (Dockerfile)
GitHub Actions (.github/workflows/)
Terraform (.tf)
Go (go.mod)
Rust (Cargo.toml)
Conda (environment.yml)

高级用法

自托管运行

# 用 Docker 运行 Renovate CLI(自托管)
docker run --rm \
  -e RENOVATE_TOKEN=ghp_xxxx \
  -e RENOVATE_REPOSITORIES='["owner/repo"]' \
  renovate/renovate

# 或者用 npm 安装
npm install -g renovate
renovate --token ghp_xxxx owner/repo

GitHub Actions 运行

# .github/workflows/renovate.yml
name: Renovate
on:
  schedule:
    - cron: '0 3 * * *'    # 每天凌晨3点运行
  workflow_dispatch:         # 手动触发

jobs:
  renovate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: renovatebot/github-action@v40
        with:
          token: ${{ secrets.RENOVATE_TOKEN }}
          configurationFile: renovate.json

分组策略

{
  "packageRules": [
    {
      "groupName": "生信工具",
      "matchPackageNames": [
        "biopython", "pysam", "HTSeq", "scanpy"
      ]
    },
    {
      "groupName": "数据科学",
      "matchPackageNames": [
        "numpy", "pandas", "scipy", "scikit-learn"
      ]
    },
    {
      "groupName": "所有非主要更新",
      "matchPackagePatterns": ["*"],
      "matchUpdateTypes": ["minor", "patch"],
      "groupName": "non-major"
    }
  ]
}

常见报错与解决

问题原因解决方案
Onboarding PR 没出现App 权限不够检查 Renovate App 的仓库权限
更新太频繁默认立即更新设置 schedule 限制更新频率
冲突太多PR 之间互相冲突使用 grouping 合并相关更新
自动合并不工作分支保护规则检查 branch protection,允许 bot 合并
不需要的更新某些包不想更新enabled: falseignoreDeps

速查表

// ===== 常用配置 =====
"extends": ["config:recommended"]     // 推荐配置
"schedule": ["every weekend"]         // 更新时间
"automerge": true                     // 自动合并
"labels": ["deps"]                    // PR 标签
"assignees": ["user"]                 // PR 指派人

// ===== 包规则 =====
"matchPackageNames": ["pkg"]          // 匹配包名
"matchPackagePatterns": ["eslint*"]   // 包名模式
"matchUpdateTypes": ["major"]         // 更新类型
"matchDepTypes": ["devDependencies"]  // 依赖类型
"groupName": "group"                  // 分组名
"enabled": false                      // 禁用更新

// ===== PR 评论命令 =====
// @renovate rebase     — 变基
// @renovate recreate   — 重建
// @renovate retry      — 重试

同类工具对比

特性RenovateDependabotSnyk
包管理器数90+~15~10
自动合并✅ 灵活✅ 基本
分组 PR✅ 强大
Merge Confidence✅ 社区数据✅ 安全评分
自托管✅ 免费付费
学习曲线中等
灵活度非常高较低中等

总结:Renovate 是最灵活的自动化依赖更新工具,支持 90+ 种包管理器,配置选项极其丰富。对于小项目用 Dependabot 就够了,但团队项目或 monorepo 用 Renovate 更合适。免费版(Community)功能就很强大。