# Renovate - 自动化依赖更新工具 [English](README.md) Renovate 是一个自动化依赖更新工具,当有新版本可用时,它会通过创建拉取请求来保持你的项目依赖最新。 ## 特性 - 🤖 跨多平台的自动化依赖更新 - 🔄 支持 GitHub、GitLab、Gitea、Bitbucket、Azure DevOps 等 - 📦 多语言支持:JavaScript、Python、Go、Docker 等众多语言 - 🎯 高度可配置,提供智能默认值 - 🔒 注重安全,支持漏洞扫描 - 📊 详细的更新摘要和变更日志 - ⚙️ 灵活的调度和自动合并选项 ## 快速开始 1. **复制示例环境文件:** ```bash cp .env.example .env ``` 2. **配置身份验证:** 编辑 `.env` 文件并设置: - `RENOVATE_PLATFORM`:你的平台(例如:`github`、`gitlab`、`gitea`) - `RENOVATE_TOKEN`:你的身份验证令牌(必需) - `RENOVATE_REPOSITORIES`:要处理的仓库(例如:`myorg/repo1,myorg/repo2`) 3. **获取身份验证令牌:** - **GitHub**:在 创建个人访问令牌 - 所需权限:`repo`、`workflow` - **GitLab**:在 创建个人访问令牌 - 所需权限:`api`、`write_repository` 4. **运行 Renovate:** ```bash # 一次性执行 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`: ```javascript 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, }, ], }; ``` ## 使用示例 ### 在特定仓库上运行 ```bash # 使用环境变量 RENOVATE_REPOSITORIES=myorg/repo1,myorg/repo2 docker compose run --rm renovate # 使用 config.js - 先编辑文件 docker compose run --rm renovate ``` ### 演练模式 在不创建实际 PR 的情况下测试配置: ```bash RENOVATE_DRY_RUN=full docker compose run --rm renovate ``` ### 调试模式 启用详细日志以进行故障排除: ```bash RENOVATE_LOG_LEVEL=debug docker compose run --rm renovate ``` ### 定期执行 创建 systemd 定时器或 cron 任务: ```bash # Cron 示例(每天凌晨 2 点运行) 0 2 * * * cd /path/to/renovate && docker compose run --rm renovate >> /var/log/renovate.log 2>&1 ``` ## 工作原理 1. **引导**:首次运行时,Renovate 会创建一个包含 `renovate.json` 配置文件的引导 PR 2. **扫描**:Renovate 扫描你的仓库以查找依赖文件(package.json、requirements.txt、Dockerfile 等) 3. **检测**:检查所有检测到的依赖项的可用更新 4. **创建 PR**:根据你的配置创建更新的拉取请求 5. **调度**:可以配置为按计划运行(每天、每周等) ## 仓库配置 引导后,在仓库的 `renovate.json` 中配置 Renovate 行为: ```json { "$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` 中配置速率限制: ```javascript prConcurrentLimit: 10, prHourlyLimit: 2, ``` ## 文档 - 官方文档: - 配置选项: - GitHub 仓库: ## 许可证 Renovate 采用 AGPL-3.0 许可证。详情请参见 [Renovate 仓库](https://github.com/renovatebot/renovate)。 ## 注意事项 - Renovate 设计为作为计划任务运行,而不是持续服务 - 首次运行将在每个仓库中创建一个引导 PR - 考虑设置 cron 任务或 CI/CD 管道以定期执行 - 监控日志以确保更新正在正确处理