天天看點

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

<a href="http://www.cnblogs.com/zhaoqingqing/p/7204478.html#">[+]</a>

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

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

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

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

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

舉例說明:

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

當A建構時,将建構編号由1011提升至1012。

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

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

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

原因:C的初始編号為1011,它需要比目前的最大+1,才可以被建構。1011-&gt;1012-&gt;1013-&gt;1014

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

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

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

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

答案:從jenkins的運作日志中

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

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

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

答案:否

打開jenkins的系統設定:

管理者身份登入 - 系統管理 - 系統設定 - 主目錄 - 進階

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

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

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

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

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

儲存位置:預設儲存在workspace/job name /建構編号/

每一次建構,都會建立一個以建構編号指令的檔案夾

舉例說明建構記錄産生的檔案

log:儲存着此次建構在Console中輸出的日志

build.xml:建構的資訊,包括建構參數,建構結果,啟動的使用者名,啟動時間戳

changelog.xml:修改日志

所有job的根目錄

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

單個Job的根目錄

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

單個job的所有建構日志

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

單個job的單次建構記錄

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

本文出自趙青青,原文連結:http://www.cnblogs.com/zhaoqingqing/p/7204478.html,如需轉載請自行聯系原作者

<a></a>