jenkins構建觸發器之Build whenever a snapshot dependency is built


整合項目上線時,運維大哥創建好Jenkins任務后,發現在構建BOSS開工、智能出行、整合這三個項目其中一個Jenkins任務時,會同時構建其他的Jenkins任務。

先介紹一下大背景兒:整合項目是一個新項目。整合項目是將BOSS開工、智能出行兩個業務線系統所具有的公共的業務功能整合到一起,減輕運營工作量和技術維護成本。這樣,系統間的邏輯結構變成了BOSS開工、智能出行會依賴整合系統的一部分接口,整合系統會依賴BOSS開工、智能出行的一部分接口。這些局域網系統是用dubbo實現rpc調用,所以,項目間會相互依賴彼此的接口契約jar。

如下圖,三個構建任務test_omsbase-rpcapi-module、test_bosskg-interface-module、test_car-pub-module-interface所構建的是三個項目的接口契約module,通過構建只是maven install到Jenkins服務器的本地倉庫,給這三個項目的應用服務程序提供jar依賴。

整合之前發版時構建BOSS開工、智能出行的任務時都很正常。為什么加上整合項目的Jenkins任務后,會出現這種“構建亂象”呢?

如下是任務構建時出現的“亂象”:

 

 

 

 

 

解決辦法:

在Jenkins任務配置的“構建觸發器”里,去掉勾選Build whenever a  snapshot  dependency is built。

原來,BOSS開工、智能出行、整合這三個項目的artifact的版本都是snapshot(IDEA新建工程時,pom文件默認指定的項目版本是1.0.1-SNAPSHOT),這個選項的意思是:只要快照依賴任務被構建,就構建當前任務。

就是說,[P1]項目依賴[P2]項目的一個快照版本的module[M],如果[P1]和[M]都有Jenkins構建任務時,那么,當[M]任務構建時,就會觸發[P1]任務的構建。

所以,就不難理解上文的“構建亂象”了。

如果不需要這樣,那解決辦法,自然是不啟用這一項了。當然,把項目版本變更成release也未嘗不可。

 

 

 

Jenkins幾種構建觸發器(Build Triggers)解釋:

Build whenever a snapshot dependency is built

當job依賴的快照版本被build時,執行本job。

Build after other projects are built

當本job依賴的job被build時,執行本job

Build periodically

隔一段時間build一次,不管版本庫代碼是否發生變化。

Poll SCM

隔一段時間比較一次源代碼如果發生變更,那么就build。否則,不進行build。

whenever
英 [wenˈevə(r)] 美 [wenˈevər]
conj.
在任何…的時候;無論何時;在任何…的情況下;每當;每次;別的什么時候(也可以);任何時間(都行)


免責聲明!

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



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