我正在通过詹金斯执行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批处理命令"块下的"高级"按钮,则会显示该字段:
此方法会将您的构建检查为"不稳定",但将继续执行。
我不想让构建失败。詹金斯成功执行了bat文件,但最后将构建标记为失败... @ n01d
它将在退出代码1上将构建标记为"不稳定",而不是"失败"。
请按以下方式使用以避免:
bat"robocopy /s source dest & EXIT /B 0"
即使robocopy返回非零错误级别,以上内容仍将继续jenkins构建。即使成功复制后,Robocopy也不会由于各种原因返回0,因为它比较了两个文件夹。请查询返回码以了解更多详细信息
如此处所述,要检查的第一个条件是用于运行Jenkins的帐户。
键入services.msc以打开Windows服务并查找Jenkins服务。
而不是"本地服务帐户",请使用您自己的帐户:这将避免任何正确的问题。
但是:其他标准是显示错误代码。
如此处所述:
All exit codes up to '3' are fine.
因此,在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不会使批处理步骤失败。
我已经尝试过了,但是无法正常工作。我收到与问题... @ VonC相同的错误消息
@ rohit.dagur您是否尝试检查错误级别并将其设置为0?
是的...我确实检查了它并设置了它,但是我的结果却是一样.. @ VonC
@ rohit.dagur您可以在脚本的结尾添加exit b 0吗?