2014-02-28 70 views
0

所以我有一個Jenkins作業,它啓動了其他作業,在代碼被推送到該環境後在特定環境中運行測試腳本(例如:代碼被推送到QA,測試項目是構建,然後使用「10個獨立」測試任務運行所有QA測試)。Jenkins:殺死下游作業,然後重新啓動

這對大多數人來說都非常有用,然而,有時候我會得到「運行的測試太多」,因爲人們會對特定環境執行大量構建,這意味着我有多個版本的相同測試正在運行。

我想這樣做,當一個作業運行並完成時,如果它的下游作業當前正在運行,它們會停止然後再次啓動(我希望測試運行在最新版本上,而不是2個測試作業在兩個不同的版本上運行)。

有沒有人知道一個很好的方法來做到這一點?還是有人可以推薦的插件?

回答

1

我可以推薦的是,您添加一個批處理文件,其中包含一個HTTP請求以取消上一次構建的作業,然後在下一步中觸發作業。我認爲下面的網址應該有所幫助。

所以在JOB-A的PostBuild步驟添加條件(單和)步驟,以檢查是否JOB-A successeded然後

執行批處理命令以取消作業-B

AND

再次啓動JOB-B

這應該是個訣竅。 (替換HUDSON_URL)

HUDSON_URL/job/JOBNAME/lastBuild/stop 

很明顯,如果您需要認證,如果Jenkins需要登錄。

另外我也許會說,也許在JOB-B中,如果upsteam項目正在構建,那麼它可能要設置爲塊,因此如果它尚未運行,它將等待上游作業。

another reference here:

希望這有助於。

+0

謝謝。我會試試這個,當我可以的時候回覆給你:) – Jason

相關問題