[英]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 時觸發它:
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.