5.9 KiB
5.9 KiB
Renovate - 自动化依赖更新工具
Renovate 是一个自动化依赖更新工具,当有新版本可用时,它会通过创建拉取请求来保持你的项目依赖最新。
特性
- 🤖 跨多平台的自动化依赖更新
- 🔄 支持 GitHub、GitLab、Gitea、Bitbucket、Azure DevOps 等
- 📦 多语言支持:JavaScript、Python、Go、Docker 等众多语言
- 🎯 高度可配置,提供智能默认值
- 🔒 注重安全,支持漏洞扫描
- 📊 详细的更新摘要和变更日志
- ⚙️ 灵活的调度和自动合并选项
快速开始
-
复制示例环境文件:
cp .env.example .env -
配置身份验证: 编辑
.env文件并设置:RENOVATE_PLATFORM:你的平台(例如:github、gitlab、gitea)RENOVATE_TOKEN:你的身份验证令牌(必需)RENOVATE_REPOSITORIES:要处理的仓库(例如:myorg/repo1,myorg/repo2)
-
获取身份验证令牌:
- GitHub:在 https://github.com/settings/tokens 创建个人访问令牌
- 所需权限:
repo、workflow
- 所需权限:
- GitLab:在 https://gitlab.com/-/profile/personal_access_tokens 创建个人访问令牌
- 所需权限:
api、write_repository
- 所需权限:
- GitHub:在 https://github.com/settings/tokens 创建个人访问令牌
-
运行 Renovate:
# 一次性执行 docker compose run --rm renovate # 或设置定时任务以定期运行 # 示例:每天凌晨 2 点运行 0 2 * * * cd /path/to/renovate && docker compose run --rm renovate
配置
环境变量
.env 中的关键环境变量:
| 变量 | 描述 | 默认值 |
|---|---|---|
RENOVATE_VERSION |
Renovate 镜像版本 | 42.52.5-full |
RENOVATE_PLATFORM |
平台类型 | github |
RENOVATE_TOKEN |
身份验证令牌 | (必需) |
RENOVATE_REPOSITORIES |
要处理的仓库 | '' |
RENOVATE_ONBOARDING |
创建引导 PR | true |
RENOVATE_DRY_RUN |
演练模式 | false |
RENOVATE_LOG_LEVEL |
日志级别 | info |
高级配置
对于高级配置,编辑 config.js:
module.exports = {
platform: 'github',
repositories: ['myorg/repo1', 'myorg/repo2'],
// 调度(cron 格式)
schedule: ['before 5am on monday'],
// 自动合并设置
automerge: true,
automergeType: 'pr',
// 包规则
packageRules: [
{
matchUpdateTypes: ['minor', 'patch'],
automerge: true,
},
],
};
使用示例
在特定仓库上运行
# 使用环境变量
RENOVATE_REPOSITORIES=myorg/repo1,myorg/repo2 docker compose run --rm renovate
# 使用 config.js - 先编辑文件
docker compose run --rm renovate
演练模式
在不创建实际 PR 的情况下测试配置:
RENOVATE_DRY_RUN=full docker compose run --rm renovate
调试模式
启用详细日志以进行故障排除:
RENOVATE_LOG_LEVEL=debug docker compose run --rm renovate
定期执行
创建 systemd 定时器或 cron 任务:
# Cron 示例(每天凌晨 2 点运行)
0 2 * * * cd /path/to/renovate && docker compose run --rm renovate >> /var/log/renovate.log 2>&1
工作原理
- 引导:首次运行时,Renovate 会创建一个包含
renovate.json配置文件的引导 PR - 扫描:Renovate 扫描你的仓库以查找依赖文件(package.json、requirements.txt、Dockerfile 等)
- 检测:检查所有检测到的依赖项的可用更新
- 创建 PR:根据你的配置创建更新的拉取请求
- 调度:可以配置为按计划运行(每天、每周等)
仓库配置
引导后,在仓库的 renovate.json 中配置 Renovate 行为:
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": ["config:base"],
"schedule": ["after 10pm every weekday", "before 5am every weekday", "every weekend"],
"packageRules": [
{
"matchUpdateTypes": ["minor", "patch"],
"automerge": true
}
]
}
支持的平台
- GitHub(github.com 和 Enterprise Server)
- GitLab(gitlab.com 和 Self-Managed)
- Gitea
- Bitbucket Cloud 和 Server
- Azure DevOps
- 以及更多...
支持的语言和管理器
Renovate 支持 100 多个包管理器,包括:
- JavaScript/Node.js:npm、yarn、pnpm
- Python:pip、poetry、pipenv
- Go:go modules
- Java:maven、gradle
- PHP:composer
- Ruby:bundler
- Rust:cargo
- Docker:Dockerfile、docker-compose
- 以及更多...
安全性
- 以非 root 用户运行(可通过
PUID/PGID配置) - 最小权限与安全加固
- 基于令牌的身份验证(绝不在日志中暴露令牌)
- 支持漏洞扫描和安全更新
资源
资源限制可在 .env 中调整:
- CPU:2.0 核限制,0.5 核保留
- 内存:2GB 限制,512MB 保留
故障排除
未找到仓库
确保 RENOVATE_TOKEN 具有适当的权限,并且 RENOVATE_REPOSITORIES 设置正确。
身份验证错误
验证令牌权限:
- GitHub:
repo、workflow - GitLab:
api、write_repository
速率限制
在 config.js 中配置速率限制:
prConcurrentLimit: 10,
prHourlyLimit: 2,
文档
- 官方文档:https://docs.renovatebot.com/
- 配置选项:https://docs.renovatebot.com/configuration-options/
- GitHub 仓库:https://github.com/renovatebot/renovate
许可证
Renovate 采用 AGPL-3.0 许可证。详情请参见 Renovate 仓库。
注意事项
- Renovate 设计为作为计划任务运行,而不是持续服务
- 首次运行将在每个仓库中创建一个引导 PR
- 考虑设置 cron 任务或 CI/CD 管道以定期执行
- 监控日志以确保更新正在正确处理