Jenkins的構建編號和一個有趣的bug


什么是構建編號

jenkins每個job的每一次構建都有一個屬於自己獨立的構建編號,每一次的構建結果(成功或失敗)所使用的編號都是不相同的。


正確的構建編號:每個job的每次構建結果使用不相同的構建編號

image


錯誤的構建編號:多個job的每次構建結果使用相同的構建編號

 image

 

多個job相同的構建編號引起的bug

舉例說明:

比如有A,B,C三個job,使用相同的構建編號

當A構建時,將構建編號由1011提升至1012。


而此時要構建B,則必須連續點擊二次,才會出現響應。

原因:B的初始編號為1011,它需要比當前的最大+1,才可以被構建。構建編號的遞增 1011->1012->1013


而如果要構建C,則必須連續點擊三次,才會出現響應。

原因:C的初始編號為1011,它需要比當前的最大+1,才可以被構建。1011->1012->1013->1014


如果多個job的構建編號是相同的(共享同一個),當產生一個新的最大構建編號時,其它job就會出現連續多次點擊都未響應。

它直到點擊N多次將自己的構建編號累加到比最大的編號+1,這個job才可以被執行。


本次構建編號=上次編號+1

引發上面的bug 原因是多個job使用相同的構建編號。

那么我們是如何發現上面的計算公式的呢?

答案:從jenkins的運行日志中

打開 系統管理 System Log(系統日志從java.util.logging捕獲Jenkins相關的日志信息。) - 所有系統日志

用戶的每一次操作,都有記錄,可以從日志中發現上述公式


造成多個job構建編號相同的原因

上面的bug是否是jenkins自己引起的呢?

答案:否


打開jenkins的系統設置:

管理員身份登錄 - 系統管理 - 系統設置 - 主目錄 - 高級

 image

jenkins的默認設置中,有一個主目錄(workspace),並為每一個job和每一次的構建結果都提供了獨立的目錄

我原本是想修改默認的workspace(主目錄),但錯誤地刪除了jenkins為每一個job提供的獨立目錄(把工作空間根目錄和構建記錄根目錄改成了固定值)


注意:主目錄(workspace工作空間)是針對全局設置的,對於任何一個job還可以自定義工作空間,在后面的文章中,我會進行介紹。


每一次構建都產生了什么?

在jenkins中,每一次的構建記錄都會被保留起來。

保存位置:默認保存在workspace/job name /構建編號/

每一次構建,都會創建一個以構建編號命令的文件夾


舉例說明構建記錄產生的文件

  • log:保存着此次構建在Console中輸出的日志
  • build.xml:構建的信息,包括構建參數,構建結果,啟動的用戶名,啟動時間戳
  • changelog.xml:修改日志


所有job的根目錄

image


單個Job的根目錄

image


單個job的所有構建日志

image


單個job的單次構建記錄

image


免責聲明!

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



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