什么是構建編號
jenkins每個job的每一次構建都有一個屬於自己獨立的構建編號,每一次的構建結果(成功或失敗)所使用的編號都是不相同的。
正確的構建編號:每個job的每次構建結果使用不相同的構建編號
錯誤的構建編號:多個job的每次構建結果使用相同的構建編號
多個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的系統設置:
管理員身份登錄 - 系統管理 - 系統設置 - 主目錄 - 高級
jenkins的默認設置中,有一個主目錄(workspace),並為每一個job和每一次的構建結果都提供了獨立的目錄
我原本是想修改默認的workspace(主目錄),但錯誤地刪除了jenkins為每一個job提供的獨立目錄(把工作空間根目錄和構建記錄根目錄改成了固定值)
注意:主目錄(workspace工作空間)是針對全局設置的,對於任何一個job還可以自定義工作空間,在后面的文章中,我會進行介紹。
每一次構建都產生了什么?
在jenkins中,每一次的構建記錄都會被保留起來。
保存位置:默認保存在workspace/job name /構建編號/
每一次構建,都會創建一個以構建編號命令的文件夾
舉例說明構建記錄產生的文件
- log:保存着此次構建在Console中輸出的日志
- build.xml:構建的信息,包括構建參數,構建結果,啟動的用戶名,啟動時間戳
- changelog.xml:修改日志
所有job的根目錄
單個Job的根目錄
單個job的所有構建日志
單個job的單次構建記錄







