当尝试将特定格式的标签推送到我的GitHub存储库时,我试图触发Jenkins Pipeline构建( NOT MultiBranch Pipeline)。因此,如果推送到存储库的任何分支都被标记为Major.Minor.Patch格式,则会触发构建。 123.123.123
我已经设置了一个可以正常工作并可以访问Jenkins的Webhook(我可以在Jenkins配置页面上的Github Hook Log中看到它)。但不幸的是,它不会触发构建。
我尝试将refspec设置为:
+refs/tags/*:refs/remotes/origin/tags/*
我已经将它与一个分支标识符一起>
:origin/tags/[0-9]+\.[0-9]+\.[0-9]+
我已经阅读了所有可以找到的文章,并仔细检查了StackOverflow,但我很茫然。我可以通过将分支标识符设置为**/tags/**
来使其工作,但这太开放了,并且会触发许多冗余构建。
如果任何人都可以帮助实现这一目标,将不胜感激。另外,我不确定是否应该使用管道到多分支管道来实现这一目标?
开始对詹金斯(Jenkins)是个好选择失去信心,所以在我上船之前请帮忙!
谢谢!
答案 0 :(得分:0)
我更喜欢使用generic webhook trigger plugin
这允许您将令牌分配给特定的Pipeline作业,以便当您的GitHub Webhook发送http请求时,将触发该令牌:
Github文档描述了http payload content的推送事件
您可以使用JSONPath表达式解析http有效负载以获取标签字符串,然后使用Major.Minor.Patch正则表达式过滤是否运行Jenkins作业
我尚未对其进行测试,但是管道代码可能如下所示:
triggers {
GenericTrigger(
genericVariables: [
[key: 'tagString',
value: '$.ref',
expressionType: 'JSONPath']
],
token: 'example-token',
printContributedVariables: true,
printPostContent: true,
// only trigger if tag follows Major.Minor.Patch regex
regexpFilterText: '$tagString',
regexpFilterExpression: '<tag-regex-here>'
)
}