2015-12-08 39 views
2

我的問題很簡單。在開始新作業時,殺死之前運行的作業(等待人力輸入)

假設我有一個jenkins工作流程作業,它檢出一些代碼,構建一個SNAPSHOT,一直執行自動化測試並將其部署到QA中。

之後,我有一個「手動輸入」,作爲工作流暫停,以詢問是否繼續釋放代碼。我們稱之爲run1

現在說QA發現一個錯誤並需要獲取新的SNAPSHOT以進行測試。這將調用一個新的版本(run2)和一個新的手動問題。

如果QA轉到run1並繼續釋放,那麼這意味着我發佈了錯誤的代碼。

我想殺死所有以前運行的作業,當我開始新的。這可能通過groovy腳本/工作流命令嗎?有沒有其他方法?

回答

0

對於任何正在努力解決相同問題的人來說,我不得不使用解決方法來解決這個問題。

我用的RESTful API給力「中止」,通過每個循環運行的任何以前的工作(我只保留10個就業機會之前,我放棄他們,這是相當快)

http://udaypal.com/workflow-integration-using-rest-api/

這是哈克,但它作品。

0

更容易的選擇是使用超時:

stage 'approve' 
timeout(time: 7, unit: 'DAYS') { 
input message: 'Do you want to deploy?', submitter: 'ops' 
} 
+0

會發生什麼,如果一個新的工作想派生給定的到期時間之前? –

+0

幾件事情:1.我希望當QA發現錯誤時,他們是那些轉到管道並說「不」的人。 2.將您的超時設置爲較低的值。 3.當QA發現錯誤時,應該在自動化測試中複製這個錯誤,從而使測試階段的流水線從此失效。 – BritishKnight