2012-10-04 103 views
1

我正與一個多配置詹金斯項目。兩個配置軸是Win/Linux和32/64位。我想在版本控制發生變化時構建主要配置(32位Windows),但每週只建立一次其他配置(只是爲了確保它們保持合理的最新狀態)。詹金斯不同的時間安排不同的配置

是否有可能實現這一目標的時間表沒有打破該項目分爲多個單項工程?

回答

1

遺憾的是不通過直接詹金斯在這一點上AFAIK。每個作業只有一個時間處理程序,而多配置是一個作業,它具有一個計時器。

有一個hack,但是這將是艱難的,而我不知道所需的確切腳本的,但如果你可以檢查一週的某一天,你可以嘗試在你的腳本是這樣的:

if (day == Sunday |OR| $NODE_NAME == win32), then: 
    <carry out build steps here> 
finish 

這樣:

  • 如果當天是星期天,所有的步驟將不管節點進行。
  • 如果節點名稱是win32,也執行步驟sw be。
  • 但是,如果一天不星期日及$ NODE_NAME是Win64平臺或linux32鏡像或LINUX64,沒有步驟將進行。

請注意,$NODE_NAME是一個標準的Jenkins環境變量。然而,這假設你的構建是通過兩種「執行命令」或「執行Windows批處理」

沒有任何理由的別人不要應該建立在同一時間做了什麼?

您可以創建兩個工作,一個用於主所以它是一個自由風格的工作,其他的與Win64的/ Linux的多配置和留下一個單獨的,周計時器。

+0

非常感謝,聰明的想法把日期檢查放在構建腳本中。我認爲你們兩個都可能是對的,我應該每次構建全部4種配置。我將使用win32構建作爲「試金石」,以便立即報告失敗的構建。 – kylewm

1

請考慮一下:

爲什麼不建立所有可用的配置EVERY時間
- 畢竟,這是持續集成的整體思路...

可以丟棄這些的文物建立的時間很短的時間後,
這樣他們就不會阻塞你的磁盤,但如果有什麼突破你的構建 - 你會馬上知道它。

還可以設置奴隸隊列上同時運行一個單一的工作,所以該版本不超載構建的服務器。

其他解決方案要求:爲您打造

  • 兩個 「新手」
  • 所有奴隸可用

設置作業_A1爲每週調度觸發Job_B(主要的多配置構建過程)。
設置Job_A2運行Job_B每當有源代碼更改。
設置Job_B知道,如果它是由作業_A1作業_A2觸發(可以通過它的名字作爲參數),
並設置Job_B作業_A2(「退出0」忽略來電),如果當前配置。不同於Windows-32bit

這樣,只要有源代碼管理更改,所有4個配置就會運行,但只有一個配置會實際構建。

祝你好運!

+0

非常有創意的解決方案!我認爲你可能是對的,我應該每次構建所有的配置。謝謝 – kylewm