如何配置Renovate识别自定义Git标签并更新Makefile语义化版本
解决方案
要实现让Renovate识别Makefile中的语义化版本,并将OpenLDAP的Git标签转换为语义化版本进行更新,需要调整renovate.json中的自定义管理器配置,重点解决版本双向转换的问题:
{ "customManagers": [ { "customType": "regex", "managerFilePatterns": ["^Makefile$"], "matchStrings": [ "VERSION\\s*:=\\s*(?<currentValue>\\d+\\.\\d+\\.\\d+)" ], "datasourceTemplate": "git-tags", "depNameTemplate": "https://git.openldap.org/openldap/openldap", "versioningTemplate": "regex:^OPENLDAP_REL_ENG_(?<major>\\d+)_(?<minor>\\d+)_(?<patch>\\d+)$", "extractVersionTemplate": "{{major}}.{{minor}}.{{patch}}", "serializeVersionTemplate": "OPENLDAP_REL_ENG_{{major}}_{{minor}}_{{patch}}" } ] }
配置关键说明
精准匹配语义化版本
matchStrings中的正则\d+\.\d+\.\d+专门捕获Makefile里的语义化版本格式(如2.5.19),确保Renovate能正确识别当前版本值。版本双向转换规则
versioningTemplate:定义OpenLDAP Git标签的结构,将标签拆分为major、minor、patch三个分组,这是转换的基础。extractVersionTemplate:指定如何从Git标签中提取语义化版本——把分组的数字用点连接,比如OPENLDAP_REL_ENG_2_6_10会被解析为2.6.10。serializeVersionTemplate:核心配置,告诉Renovate如何把Makefile中的语义化版本反向转换成对应的Git标签格式(比如2.5.19→OPENLDAP_REL_ENG_2_5_19),这样Renovate就能在数据源中找到匹配的标签,确认当前版本的有效性,进而检测新版本。
工作流程
- Renovate读取Makefile中的
VERSION := 2.5.19,通过serializeVersionTemplate生成对应的Git标签OPENLDAP_REL_ENG_2_5_19,验证该标签在OpenLDAP仓库中存在。 - 拉取仓库中所有符合规则的Git标签,用
extractVersionTemplate将每个标签转换为语义化版本,比较后找到最新版本(如2.6.10)。 - 自动发起PR,将Makefile中的版本更新为解析后的语义化版本
2.6.10。
内容的提问来源于stack exchange,提问作者Kins
相关产品推荐
相关产品推荐

