Files
compose-anything/src/renovate/README.zh.md
2025-12-14 19:55:30 +08:00

5.9 KiB
Raw Blame History

Renovate - 自动化依赖更新工具

English

Renovate 是一个自动化依赖更新工具,当有新版本可用时,它会通过创建拉取请求来保持你的项目依赖最新。

特性

  • 🤖 跨多平台的自动化依赖更新
  • 🔄 支持 GitHub、GitLab、Gitea、Bitbucket、Azure DevOps 等
  • 📦 多语言支持JavaScript、Python、Go、Docker 等众多语言
  • 🎯 高度可配置,提供智能默认值
  • 🔒 注重安全,支持漏洞扫描
  • 📊 详细的更新摘要和变更日志
  • ⚙️ 灵活的调度和自动合并选项

快速开始

  1. 复制示例环境文件:

    cp .env.example .env
    
  2. 配置身份验证: 编辑 .env 文件并设置:

    • RENOVATE_PLATFORM:你的平台(例如:githubgitlabgitea
    • RENOVATE_TOKEN:你的身份验证令牌(必需)
    • RENOVATE_REPOSITORIES:要处理的仓库(例如:myorg/repo1,myorg/repo2
  3. 获取身份验证令牌:

  4. 运行 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

工作原理

  1. 引导首次运行时Renovate 会创建一个包含 renovate.json 配置文件的引导 PR
  2. 扫描Renovate 扫描你的仓库以查找依赖文件package.json、requirements.txt、Dockerfile 等)
  3. 检测:检查所有检测到的依赖项的可用更新
  4. 创建 PR:根据你的配置创建更新的拉取请求
  5. 调度:可以配置为按计划运行(每天、每周等)

仓库配置

引导后,在仓库的 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
    }
  ]
}

支持的平台

  • GitHubgithub.com 和 Enterprise Server
  • GitLabgitlab.com 和 Self-Managed
  • Gitea
  • Bitbucket Cloud 和 Server
  • Azure DevOps
  • 以及更多...

支持的语言和管理器

Renovate 支持 100 多个包管理器,包括:

  • JavaScript/Node.jsnpm、yarn、pnpm
  • Pythonpip、poetry、pipenv
  • Gogo modules
  • Javamaven、gradle
  • PHPcomposer
  • Rubybundler
  • Rustcargo
  • DockerDockerfile、docker-compose
  • 以及更多...

安全性

  • 以非 root 用户运行(可通过 PUID/PGID 配置)
  • 最小权限与安全加固
  • 基于令牌的身份验证(绝不在日志中暴露令牌)
  • 支持漏洞扫描和安全更新

资源

资源限制可在 .env 中调整:

  • CPU2.0 核限制0.5 核保留
  • 内存2GB 限制512MB 保留

故障排除

未找到仓库

确保 RENOVATE_TOKEN 具有适当的权限,并且 RENOVATE_REPOSITORIES 设置正确。

身份验证错误

验证令牌权限:

  • GitHubrepoworkflow
  • GitLabapiwrite_repository

速率限制

config.js 中配置速率限制:

prConcurrentLimit: 10,
prHourlyLimit: 2,

文档

许可证

Renovate 采用 AGPL-3.0 许可证。详情请参见 Renovate 仓库

注意事项

  • Renovate 设计为作为计划任务运行,而不是持续服务
  • 首次运行将在每个仓库中创建一个引导 PR
  • 考虑设置 cron 任务或 CI/CD 管道以定期执行
  • 监控日志以确保更新正在正确处理