簡體   English   中英

即使在BAT腳本中成功執行了ROBOCOPY命令,JENKINS作業也會失敗

[英]JENKINS job is failed even if ROBOCOPY command successfully executed in a BAT script

我正在通過詹金斯執行Windows蝙蝠腳本。 批處理文件正在提供所需的輸出,但是構建失敗。我的批處理文件是..

cd /d D:\\Bank\\Member\\ID

if %errorlevel% neq 0 exit /b %errorlevel%

mkdir OTP

if %errorlevel% neq 0 exit /b %errorlevel%

robocopy C:\Corporate D:\\Bank\\Member\\ID\ /E /XF  *.bat

if %errorlevel% neq 1 exit /b %errorlevel%

cd /d D:\\Bank\\Staff\\ID

成功復制文件后,機器人將給出退出代碼1。
但是,牛仔褲無法正常工作並出現以下錯誤:

Build step 'Execute Windows batch command' marked build as failure
Finished: FAILURE

如果robocopy退出代碼1,我希望構建成功。

我最好的建議是使用jenkins-pipeline,try / catch塊,並盡可能少地使用bat命令(或者根本不使用)。

但是考慮到您的情況,也有一個簡單的解決方案:只需將字段“ ERRORLEVEL以將構建不穩定設置為”設置為1(或其他合適的數字)。 如果單擊“執行Windows批處理命令”塊下的“高級”按鈕,則會顯示該字段:

在此處輸入圖片說明

此方法會將您的構建檢查為“不穩定”,但將繼續執行。

如此處所述 ,要檢查的第一個條件是用於運行Jenkins的帳戶。 鍵入services.msc以打開Windows服務並查找Jenkins服務。

不用“本地服務帳戶”,而是使用您自己的帳戶:這樣可以避免出現任何權利問題。

但是:其他標准是顯示錯誤代碼。
如此處所述

所有不超過3的退出代碼都可以。

因此,在robocopy之后,您可以添加:

@echo robocopy exit code: %ERRORLEVEL%
@if %ERRORLEVEL% GTR 3 ( echo robocopy ERROR )
@if %ERRORLEVEL% GTR 3 ( exit %ERRORLEVEL% )
@set ERRORLEVEL=0
REM at the end:
exit /b 0

即使robocopy的原始錯誤級別為1,這也可以確保Jenkins不會使批處理步驟失敗。

請使用以下方式避免:

bat "robocopy /s source dest & EXIT /B 0"

即使robocopy返回非零錯誤級別,以上內容仍將繼續jenkins構建。 即使成功復制后,Robocopy也不會由於各種原因返回0,因為它比較了兩個文件夾。 請查詢返回碼以了解更多詳細信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM