簡體   English   中英

從 Github 標簽觸發 Jenkins 管道構建

[英]Trigger Jenkins pipeline build from Github Tag

當將特定格式的標簽推送到我的 GitHub 存儲庫時,我正在嘗試觸發 Jenkins 管道構建(不是多分支管道)。 因此,如果將任何推送到存儲庫的分支標記為 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 是一個不錯的選擇失去信心,所以在我跳船之前請幫忙!

謝謝!

我更喜歡使用通用的 webhook 觸發器插件

這允許您將令牌分配給特定的 Pipeline 作業,以便在您的 GitHub webhook 發送 http 請求作業的相應 url 時觸發它:

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

Github 文檔描述了推送事件的http 有效負載內容

您可以使用 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>'
        )
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM