一尘不染

如何使jenkins在失败的Windows Batch命令中失败?

jenkins

我在jenkins中使用了一些Windows批处理命令,其中每个命令都可能失败。为了使詹金斯工作在每个步骤上失败,这些批处理命令如下所示:

net use m: \\%IP_ADDRESS%\Whatever %PASSWORD% /user:%USERNAME%
if ERRORLEVEL 1 exit 1
mkdir m:\Install
if ERRORLEVEL 1 exit 1
copy /b %LOCAL_TEMP%\%INSTALLER_EXE% m:\Install\%INSTALLER_EXE% 
if ERRORLEVEL 1 exit 1
net use m: /D
if ERRORLEVEL 1 exit 1

换句话说:我似乎要检查每个批处理命令是否失败,然后在必要时以错误代码1退出。有没有更有意义/更方便/更好的方法来实现这一目标?

如果我不检查每个步骤并退出,jenkins将执行以下批处理命令。


阅读 370

收藏
2020-07-25

共1个答案

一尘不染

可悲的是,您不能激活-ein
bash之类的标志,该标志会在任何不为0的返回码上退出。但是,您可以使用逻辑or跳转到退出标签,如下所示:

例如,创建此.cmd文件:

@echo off

echo Starting very complicated batch file...
ping -invalid-arg || goto :error
echo OH noes, this shouldn't have succeeded.
goto :EOF

:error
echo Failed with error #%errorlevel%.
exit /b %errorlevel%
2020-07-25