2012-10-16 81 views
5

我有需要4個作業中的以下序列詹金斯並行觸發和等待

JOB A 
|------> JOB B 
|------> JOB C 
      |------> JOB D 

執行在上述

  1. A應該觸發乙&Ç平行和C inturn觸發D.
  2. A應該持續工作,直到所有3人完成。

我嘗試了以下插件,並不能達到我所期待的

  • 加入插件
  • 多椎插件
  • 多配置項目
  • Paramterized觸發插件

是否有任何插件,我沒有嘗試過會幫助我解決這個問題。或者這可以通過不同的方式實現。請指教。

回答

1
+0

[它很快就被棄用(https://wiki.jenkins-ci.org/display/JENKINS/Proposed+Plugin+Deprecation)。無論如何,我也找不到有關如何使其工作的任何文檔?你有什麼? – raksja

+0

看到[這](http://stackoverflow.com/a/6279210/150371),但甚至無法弄清楚如何釋放鎖等 – raksja

1

這可能不是最佳的方式,但它應該工作。使用參數化觸發器插件。對於作業A,添加構建步驟(而不是後期構建操作),以在同一構建步驟和阻止中啓動作業B和C直至完成。在作業C中,添加一個構建步驟(不是後期構建操作),該步驟啓動作業D AND塊直至完成。這應該讓工作A在整個持續時間內運行。

雖然這並不是最佳選擇:作業A保持開啓狀態,等待B和C完成。然後C保持開放直到D完成。

工作A需要保持持續運行的原因是否有某些原因?另一種可能性是在B和C啓動後讓作業A終止,但在作業A上有促銷活動,在B,C和D作業成功後執行最後的行動。

+0

感謝您的建議@Jason。我想我已經嘗試過這種方法。但是這裏的問題是我需要向B&C傳遞2個不同的參數集。對於B,它在哪個Node上運行(使用NodeLabel插件)以及C屬性集。 _參數化觸發插件中沒有選項可以同時觸發2個作業,使用2組不同的參數。_ :( – raksja

1

我想建立一個相同的系統。我正在構建一個認證管道,我需要運行打包程序/構建/部署作業和相應的測試作業。當它們全部成功時,我想彙總測試結果並觸發可以執行自動化Maven發佈的發佈作業。

我選擇了構建管道插件用於系統的可視化。最初嘗試使用具有阻止構建的參數化觸發器插件。由於對工件進行歸檔工作僅適用於postbuild,因此我無法設置歸檔工件/指紋和下游構建關係。然後,我將參數化觸發器置於後期構建活動中。這樣,我就能夠建立下游建立,指紋識別,彙總檢查結果,但構建失敗並沒有冒泡上游作業鏈和上游的工作是非阻塞

我終於能夠這樣使用這些插件 -

實現
  • 構建流水線
  • 多椎插件
  • 指紋插件
  • 複製文物插件
  • 加入插件

我使用詹金斯1.514

系統看起來像這樣

觸發工作 - >建(和部署)工作(1..N)--->測試工作(1 .. N)

觸發工作 -

  • 創建爲多椎和創建外殼EXEC指紋文件

    呼應date +%s> fingerprint.txt

訣竅是,文件需要構建期間存檔,做執行該腳本 -

ARCHIVEDIR=$JENKINS_HOME/jobs/$JOB_NAME/builds/$BUILD_ID/archive 
mkdir $ARCHIVEDIR 
cp fingerprint.txt $ARCHIVEDIR 
  • 創建一個由多椎階段構建/部署作業。
  • 構建/部署作業本身是一個多任務
  • 遵循相同的步驟創建構建/部署作業與上述相關 指紋。
  • 複製從上游作業的fingerprint.txt工件
  • 設置多椎相在部署作業觸發測試作業
  • 創建一個新的指紋文件和力歸檔類似於上述步驟在
  • 收集Junit的結果最終測試工作。


在觸發作業,請加入插件,通過選擇「運行後生成的加入操作」,只有在觸發工作的穩定版執行釋放項目執行解除作業。 這樣所有步驟都顯示在Build Pipeline視圖中,並且觸發器作業正在阻止所有下游構建完成並將其狀態設置爲最差的下游構建,以便爲釋放作業提供決策點。

+0

聽起來像是一個有趣的連續傳送管道解決方案。想知道是否沒有簡單的方法。 – vezenkov

1

多椎插件

如果你想停止與下行/上行作業鏈定義的混亂。或者當你想添加一個完整的Jenkins作業層次結構時,它們將按順序或並行執行。將上下文添加到您的構建流中,實現從MultiJob到其所有階段和作業的參數繼承。階段是連續的,而每個階段內的作業是平行的。

https://wiki.jenkins-ci.org/display/JENKINS/Multijob+Plugin

+0

This Plugin也可以用於管理並行/串行任務:[https://wiki.jenkins-ci.org/display/JENKINS/Dependency+Graph+View+Plugin] –

+0

這也可以給一些想法:[http:// stackoverflow .COM /問題/ 4510640 /命令行 - 什麼 - 是最專門的] –

2

使用DSL腳本建立流動插件。

嘗試這個例子爲您執行:

build("job A") 

    parallel 
    (
     {build("job B")} 
     {build("job C")} 
    ) 

    build("job D")