You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自建Renovate与Gitea集成自动合并功能失效问题排查

问题:Renovate自动合并失效及分支缓存未找到原因分析

背景信息

已配置Renovate自动合并minor和patch版本,但功能未生效,对应分支状态显示为黄色。日志提示Branch cache not found, creating minimal branchState,已设置环境变量:

export RENOVATE_BASE_DIR="/renovate"

且缓存目录已按预期存在。

使用版本:Gitea 1.20.5、自建Renovate 37.34.0。分支所有测试无报错,Gitea用户权限如下:

write:activitypub
write:misc
write:notification
write:organization
write:package
write:issue
write:repository
write:user

Renovate由Jenkins每小时触发执行,Renovate配置:

{
  "platform": "gitea",
  "endpoint": "https://myGitea/api/v1/",
  "token": "myToken",
  "branchPrefix": "renovate.",
  "logFile": "/renovate/renovate.log",
  "logFileLevel": "debug",
  "extends": [ "config:recommended"],
  "hostRules": [
    {
      "matchHost": "myRepo",
      "token": "myToken"
    }
  ],
  "packageRules": [
    {
      "matchDatasources": ["maven"],
      "registryUrls": [
        "https://myRepo/artifactory/release"
      ]
    },
    {
      "matchUpdateTypes": ["minor", "patch"],
      "matchCurrentVersion": "!/^0/",
      "automerge": true
    }
  ],
  "platformAutomerge": true,
  "repositories": [
    "myRepo"
  ]
}

关键日志片段:

DEBUG: resolveBranchStatus(branchName=renovate.jackson_version, ignoreTests=false) (repository=myRepo, branch=renovate.jackson_version)
DEBUG: Branch status check result (repository=myRepo, branch=renovate.jackson_version)
       "ccs": {"worstStatus": "unknown", "statuses": []}
DEBUG: Branch status yellow (repository=myRepo, branch=renovate.jackson_version)
DEBUG: PR is not ready for merge (branch status is yellow) (repository=myRepo, branch=renovate.jackson_version)

解答

1. 自动合并失效的根本原因

从日志可以明确看到,自动合并失败是因为Renovate无法获取到分支的状态检查结果,导致判定分支状态为黄色(worstStatus: unknown,且statuses为空数组),进而阻止了自动合并流程。

具体诱因可能包括:

  • Gitea的CI/CD状态检查未正确向Renovate同步结果,或者状态检查的标识不符合Renovate的识别规则
  • Renovate与Gitea版本存在适配问题:你使用的Renovate 37.34.0和Gitea 1.20.5在状态检查集成上存在兼容性bug
  • 虽然分支测试实际通过,但Renovate未接收到Gitea返回的状态检查数据,无法确认分支是否满足合并条件

解决方向:

  • 在Renovate配置中添加ignoreTests: true(可全局或针对特定packageRule设置),跳过状态检查验证直接触发自动合并(仅在确认测试确实通过时使用)
  • 升级Renovate到更高版本,查看是否有针对Gitea 1.20.x的适配修复
  • 检查Gitea的webhook配置,确保状态检查完成后能通知到Renovate,同时确认Renovate有权限通过Gitea API读取状态检查信息

2. 分支缓存未找到的原因

日志中的Branch cache not found提示,核心原因基本和Jenkins的执行环境特性相关:

  • Jenkins每次触发Renovate时,如果使用临时容器或干净工作空间,/renovate目录不会被持久化,每次运行都是全新环境,自然找不到之前的缓存
  • 即使目录存在,Jenkins执行Renovate的用户可能没有该目录的读写权限,导致缓存无法写入或读取
  • RENOVATE_BASE_DIR环境变量可能未正确传递到Renovate进程中,导致缓存路径识别错误

解决方向:

  • 在Jenkins任务中配置持久化卷,将/renovate目录挂载到外部存储,确保每次运行都能复用缓存
  • 检查/renovate目录的权限,确保Renovate运行用户拥有读写权限
  • 在Renovate配置中显式指定cacheDir参数,比如"cacheDir": "/renovate/cache",明确缓存存储路径

内容的提问来源于stack exchange,提问作者Cengiz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 19:40:55