自托管Renovate Bot匹配linuxserver.io稳定镜像的正则优化求助
问题:Renovate Bot正则匹配linuxserver.io稳定镜像标签
我搭建了自托管Renovate Bot,因linuxserver.io的Docker标签格式多样,转而使用正则匹配版本。现有配置如下:
{ "$schema": "https://docs.renovatebot.com/renovate-schema.json", "extends": [ "config:base", "docker:enableMajor" ], "packageRules": [ { "packagePatterns": ["^ghcr.io\\/linuxserver\\/"], "versionScheme": "regex:MYFANCYREGEX" } ] }
测试标签示例(仅需匹配前7行稳定标签,排除后5行非稳定标签):
100.200.300 100.200.300.7068-ls170 v100.200.300-ls213 version-100.200.300 version-100.200.300-ls180 version-100.200.300.11111 100.200.300.7068-ls170 nigthly-100.200.300 -> 非稳定,不匹配 nightly-100.200.300.3604-ls587 -> 非稳定,不匹配 100.200.300-development -> 非稳定,不匹配 100.200.300-develop -> 非稳定,不匹配 100.200.300-nigthly -> 非稳定,不匹配
我无法通过(?!或^)排除含特定内容的标签,需要调整正则以仅匹配稳定构建及带ls/build编号的镜像更新。
解决方案
正则表达式
使用以下正则匹配符合要求的稳定标签:
^(?!.*(nightly|nigthly|develop|development))(?:v?|version-)?\d+(?:\.\d+)*(?:-ls\d+)?$
更新后的Renovate配置
{ "$schema": "https://docs.renovatebot.com/renovate-schema.json", "extends": [ "config:base", "docker:enableMajor" ], "packageRules": [ { "packagePatterns": ["^ghcr.io\\/linuxserver\\/"], "versionScheme": "regex:^(?!.*(nightly|nigthly|develop|development))(?:v?|version-)?\\d+(?:\\.\\d+)*(?:-ls\\d+)?$" } ] }
正则逻辑说明
^(?!.*(nightly|nigthly|develop|development)):前置断言,直接排除包含任意指定非稳定关键词的标签(包含拼写错误的nigthly)(?:v?|version-)?:匹配可选的前缀v或version-\d+(?:\.\d+)*:匹配核心版本号格式(如100.200.300或100.200.300.7068)(?:-ls\d+)?:匹配可选的-ls构建后缀(如-ls170)$:确保标签完整匹配到末尾,避免部分匹配
内容的提问来源于stack exchange,提问作者MemLeak
相关产品推荐
相关产品推荐

