首页 > 解决方案 > 带有正则表达式的版本控制模板以提取 github 标记

问题描述

我正在尝试通过 renovate 在我的git 存储库中监视Dockerfile,它获取postfixadmin/postfixadmin的 git 标签版本作为参数。此版本应由 regexManager 监控。作为数据源,我使用 github-tag。这是我的配置:

{
  "regexManagers": [
    {
      "description": "Update postfixadmin git tag",
      "fileMatch": [
        "^Dockerfile$"
      ],
      "matchStrings": [
        "ARG POSTFIXADMIN_VERSION=(?<currentValue>.*?)"
      ],
      "depNameTemplate": "postfixadmin/postfixadmin",
      "versioningTemplate": "regex:^(?<prefix>postfixadmin-)?(?<major>\\d+)\\.(?<minor>\\d+)\\.(?<patch>\\d+)$",
      "datasourceTemplate": "github-tags"
    }
  ]
}

我通过regex101.com验证了我的 versioningTemplate 正则表达式,但我没有收到任何带有新版本 postfixadmin 的拉取请求。

有谁知道这里错过了什么配置?

标签: regexrenovate

解决方案


这里底层的正则表达式引擎是PHP PCRE,在这里你需要使用一种特定的形式来编写正则表达式,即正则表达式文字表示法。

错误应该用

"versioningTemplate": "regex:/^(?<prefix>postfixadmin-)?(?<major>\d+)\.(?<minor>\d+)\.(?<patch>\d+)$/",

其中/字符用作正则表达式分隔符。

由于正则表达式是在单独的文件中而不是在代码文件中编写的,因此您不需要双反斜杠,除非它们由软件以特定方式解析。


推荐阅读