【问题标题】:Trigger Jenkins pipeline build from Github Tag从 Github Tag 触发 Jenkins 管道构建
【发布时间】:2020-07-07 19:00:08
【问题描述】:

当特定格式的标签被推送到我的 GitHub 存储库时,我正在尝试触发 Jenkins 管道构建(NOT MultiBranch Pipeline)。因此,任何推送到存储库的分支都将触发构建,如果它被标记为 Major.Minor.Patch 格式,例如123.123.123

我已经设置了一个运行良好的 webhook 并且可以访问 Jenkins(我可以在 Jenkins 配置页面上的 Github Hook Log 中看到它)。但不幸的是它不会触发构建。

我尝试将 refspec 设置为:

+refs/tags/*:refs/remotes/origin/tags/*

我还附上了一个分支标识符:

:origin/tags/[0-9]+\.[0-9]+\.[0-9]+

我已经阅读了我能找到的所有文章,并搜索了 StackOverflow,但我不知所措。我可以通过将分支标识符设置为 **/tags/** 来使其工作,但这太开放了,会触发大量冗余构建。

如果有人可以帮助实现这一目标,我们将不胜感激。另外,我不确定是否应该使用 Pipeline to MultiBranch Pipeline 来实现这一点?

开始对 Jenkins 是一个不错的选择失去信心,所以在我跳槽之前请帮忙!

谢谢!

【问题讨论】:

    标签: jenkins jenkins-pipeline


    【解决方案1】:

    我更喜欢使用generic webhook trigger plugin

    这允许您将令牌分配给特定的 Pipeline 作业,以便在您的 GitHub webhook 向作业的相应 url 发送 http 请求时触发它:

    • http://JENKINS_URL/generic-webhook-trigger/invoke?token={token-goes-here}

    Github 文档描述了 http payload content 用于推送事件

    您可以使用 JSONPath 表达式解析 http payload 以获得标记字符串,然后使用 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>'
            )
    }
    

    【讨论】:

    • 迈克尔你是个天才先生!这正是我需要的东西。如果我一周前发现它而不是使用 GitSCM 插件就好了。詹金斯诸神如此嘲笑我。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2020-08-24
    • 1970-01-01
    • 2022-11-14
    • 2022-08-24
    • 2019-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多