2014-02-23 108 views
3

我正試圖在Jenkins中創建2步作業。如果第一步失敗,我只想運行第二步。 (第一步執行單元測試,看看我正在編譯的代碼是否正確 - 如果不是,那麼我想在第二步中運行一些診斷程序)。如何僅在上一步失敗時在Jenkins中運行條件步驟

有條件的一步插頭似乎是一個不錯的選擇。這一點。但是,我無法解決如何使用條件步驟插件在第一步失敗時導致第二步運行。

在有條件的一步插件提供的條件清單,如「從不」,「布爾條件」 ......和「當前生成狀態」。我本以爲我應該使用「當前構建狀態」條件,並將最壞狀態設置爲「失敗」,並將最佳狀態設置爲「不穩定」。然後如果第一步失敗,第二步將運行。

但是似乎有這個問題。當第一步失敗時,Jenkin就停止了這項工作。所以第二步從來沒有機會評估它的狀況,看看它是否應該運行。

所以我不能看到如何使用的失敗「當前構建狀態」可能曾經在條件步驟插件使用 - 彷彿構建已經失敗,我們永遠不會有條件步驟。如何在第一步中將構建狀態標記爲失敗,但沒有讓Jenkins在那一刻停止工作?

千恩萬謝

戴夫·辛克萊

+0

入住這裏傑森的回答http://stackoverflow.com/questions/9664716/archiving-artifacts-not-in-the-workspace-when-build-fails –

回答

0

一個不雅的出路將是使用「後生成任務插件」。 它可以解析構建日誌。所以你可以設置它來檢查失敗日誌語句。一旦找到你可以啓動一個腳本。也許你可以通過這個腳本觸發第二次構建。

我相信會有一些其他的優雅選擇了那裏在後期生成任務生態系統。我正在看這個問題,讓詹金斯專家來回答。

0

您可以創建一個腳本創建步驟,總會成功。在該腳本中,您可以在一切正常時創建一個文件,在出現問題時再創建一個文件。您可以在兩個單獨的條件構建步驟中檢查文件的存在。例如:

REM Clean up flags 
del build_failed 
del build_ok 

REM This should be the actual buildstep 

REM Foobar does not exist, so it will return an error. dir will always work. Exchange the  REM between the two lines to test both scenarios 
dir foobar 
REM dir 

REM Set the flags based on the build step status 
IF NOT %ERRORLEVEL% == 0 (
    echo > build_failed 
) ELSE (
    echo > build_ok 
) 

REM Ensure that this step will always pass 
EXIT 0 
相關問題