[英]Trigger Jenkins job due to a Azure git repo pull request
我已閱讀 此頁面中的文檔,並且可以看到有一個選項可以“在創建拉取請求時觸發構建”。 我做了以下事情:
在 Azure DevOps現在,每當我發出拉取請求時,確實會觸發構建,但我的問題是:如何克隆拉取請求提交以便構建檢查拉取請求是否應該完成?
如果您願意,還有一個問題:我可以在我的“構建觸發器”部分中看到這些復選框:
這些有什么用? 因為據我所知,只要在 Git 存儲庫中創建新的提交/拉取請求,只有“輪詢 SCM”復選框才會導致構建運行。
使用自由式工作,我可以通過以下方式完成這項工作:
+refs/heads/*:refs/remotes/origin/* +refs/pull/*:refs/remotes/origin-pull/*
**
,以便跟蹤和構建pull/*
分支。問題是如何在流水線作業中進行這項工作。
檢查 Jenkins Pipeline 作業中的拉取請求提交。 您可以在結帳步驟中添加 refspec,如下所示:
steps {
checkout([$class: 'GitSCM',
extensions: [[$class: 'LocalBranch']],
userRemoteConfigs: [[refspec:"+refs/heads/*:refs/remotes/origin/* +refs/pull/*:refs/remotes/origin-pull/*",credentialsId: '<credentialsId>', url: "<git repo url>"]]])
//
}
注意: credentialsId
來自Jenkins --> Credentials ,您可以在其中為 azure devops 存儲庫添加憑據。 見這里。
請參見下面的示例結果:
對於Build Triggers
部分中的Poll SCM
。 如果您啟用了Poll SCM
,jenkin 服務器將以固定的時間間隔輪詢 SCM 以檢查是否進行了更改並在推送新提交時構建項目。
不推薦輪詢 SCM 選項。 因為它對 CVS 來說是一項昂貴的操作。 它通常在“推送”觸發器不起作用時使用(例如,repo 在本地源代碼控制服務器中)
請注意,這對於 CVS 來說將是一項昂貴的操作,因為每次輪詢都需要 Jenkins 掃描整個工作區並與服務器進行驗證。 考慮設置“推送”觸發器以避免這種開銷
好吧,在搞砸了很多時間之后,我發現了以下結論,這對我來說並不完全有意義:
首先,在使用這些選項時會檢查不同的行為。 假設Jenkins的配置如下:
管道配置
feature
分支配置為“要構建的分支”詹金斯文件
skipDefaultCheckout()
checkout(... branches: [[ name: '**' ]], userRemoteConfigs: [[refspec:"+refs/heads/*:refs/remotes/origin/* +refs/pull/*:refs/remotes/origin-pull/*" ]])
(忽略不相關的配置) 現在,創建一個新的拉取請求,觀察到的行為是:
使用通用構建:默認簽出將簽出feature
分支。 在聲明multiple candidate revisions
后, checkout
出步驟可能(並且通常會)簽出舊的拉取請求提交
使用觸發器 Git 構建:默認簽出失敗,因為它不知道提交 object,因為未在配置頁面中配置 refspec。 配置完成后,默認簽出會檢查最新的拉取請求提交。
所以基本上我們得到以下結論:
為此,請執行以下步驟:
Azure DevOps 服務掛鈎
配置“拉取請求合並嘗試”類型的 Jenkins 服務掛鈎,並將其設置為“觸發 Git 構建”
管道配置頁面
Poll SCM
選項+refs/heads/*:refs/remotes/origin/* +refs/pull/*:refs/remotes/origin-pull/*
和branches: [[name: '**']]
詹金斯文件
skipDefaultCheckout
選項,並使用上面寫的帶有refspec
的checkout
步驟:checkout([$class: 'GitSCM', branches: [[name: '**']], , userRemoteConfigs: [[name: 'origin', refspec: '+refs/heads/*:refs/remotes/origin/* +refs/pull/*:refs/remotes/origin-pull/*', url: '<git_url>']]]))
如果有人對這些事情有進一步的解釋,那么歡迎您!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.