jenkins實現master變化時,才觸發構建(過濾分支)


 

現狀:現在是這樣的,每個開發push時,都觸發jenkins進行構建

期望:只有當代碼被push到master時才進行構建

(根據使用的git平台)做這些配置需要先了解一些概念

(github) pull request

(gitlab) merge request

 

理解 GitHub 的 Pull Request 和 GitLab 的 Merge Request 有區別嗎?看這篇

 https://cloud.tencent.com/developer/article/1341633

個人理解,其實pull request 和 merge request表達的意思都是一樣的,只是在不同的平台,起了不同的名字

  • GitHub、Bitbucket 和碼雲(Gitee.com)選擇 Pull Request 作為這項功能的名稱
  • GitLab 和 Gitorious 選擇 Merge Request 作為這項功能的名稱 

 

然后還要理解gitlab的工作流

 

步入正題:

2種方式可以實現 只有master代碼變化時才觸發自動化測試

  • 利用merge request: 當開發發送merger request給項目leader時(要求合代碼),就進行構建
  • 利用jenkins進行配置,只有當master代碼產生push時,才進行構建

 

方式1:利用merge request方式:

 

step1:

打開gitlab倉庫配置的webhook,勾選Merge request events的選項

我這邊是已經配置過webhook了,如果還沒有配置過,請參考這篇進行配置:

GitLab 自動觸發 Jenkins 構建

 

 

 

 

 

step2:配置jenkins

打開項目配置

Builder triggers>>取消勾選Push Events 選項,然后把有關merge request events 的選項勾上(如果不去掉push events 當分支發生push時,jenkns還是會構建

 

step3:測試配置結果

在gitlab 發送一個push的請求,可以看到jenkins已經不會構建了

再測試發送一個 merge request

發現jenkins已經在進行構建了

 

 

方式2:利用jenkins進行配置,只有當master代碼產生push時,才進行構建,這個很簡單

我們可以通過jenkins>>Builder triggers 配置正則匹配,只有當master分支發生改變時才會觸發jenkins。

 

step1:打開項目配置

Builder triggers>>Advanced>>Allowed branches>>Filter branches by regex>>Target Branch Regex>>填寫master>>保存配置

 

 

注意:這次要勾選 push events 

 

step2:測試配置結果

a.當開發在dev分支push時,jenkins不會再進行構建

b.當開發在 master push時,jenkins進行構建了

 

至此就實現了我想要實現的效果:只有master分支會觸發jenkins進行構建

 

我遇到坑:

如果我使用方式2配置了過濾分支的正則表達式(同時勾選了push events ),gitlab發送請求的時候就會報錯  



造成這個問題的原因是,我的正則表達式寫錯了,暈~

應該是master 而不是*master

 

我參考的文章,謝謝前人zai樹,讓后人可以乘涼

配置github的pull request觸發jenkins自動構建

jenkins定位master分支構建

配置GitHub pull request時jenkins自動構建

 gitlab自動化觸發jenkins構建項目

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM