簡體   English   中英

錯誤代碼為0,但Jenkins作業失敗

[英]Error code is 0 but Jenkins job is failure

我總是詹金斯失敗:

構建步驟“執行Windows批處理命令”將構建標記為失敗

但是當我輸入批處理命令時:“ echo退出代碼為%errorlevel%”,我得到0代碼。

我的批處理命令是:

ELSE (
   ROBOCOPY.EXE C:\dir2\ C:\dir1\ script.bat /IS
   cd C:\dir1\
   echo Exit Code is %errorlevel%
   C:\dir1\script.bat
   echo Exit Code is %errorlevel%
   ROBOCOPY.EXE C:\dir1 C:\dir3 /E /IS /XF *.config 
   echo Exit Code is %errorlevel%
)
echo TEST

從不顯示命令回顯TEST。 當我從批處理“ C:\\ dir1 \\ script.bat”中刪除時,一切正常,詹金斯工作成功。

腳本bat僅包含如下命令:

德爾。\\ bin \\ library.dll

您怎么看,問題出在script.bat? 當我在此腳本的末尾添加:EXIT / B 0時,作業也失敗了。

您必須在這里為我們提供超過一半的陳述,才能得到明確的答案。 這可能是)在之前else丟失(它必須在同一行的else關鍵字)。

您更有可能成為delayed expansion問題中的4800萬受害者。 請參閱關於SO的無數示例。

在塊語句(a parenthesised series of statements) ,將分析整個然后執行。 解析該塊時-執行該塊之前-該塊內的任何%var%都將由該變量的值替換-同樣的情況也適用於FOR ... DO (block)

因此,將在遇到IF時使用%variables%的值執行IF (something) else (somethingelse)

解決此問題的兩種常用方法是:1)使用setlocal enabledelayedexpansion和使用!var! 代替%var%訪問的改變值var或2),以調用一個子程序使用改變的值來執行進一步的處理。

因此,您將看到解析 (假定的) IF時(執行之前)時存在的errorlevel值。

暫無
暫無

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

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