即使 ROBOCOPY 命令在 BAT 脚本中成功执行,JENKINS 作业也会失败

Posted

技术标签:

【中文标题】即使 ROBOCOPY 命令在 BAT 脚本中成功执行,JENKINS 作业也会失败【英文标题】:JENKINS job is failed even if ROBOCOPY command successfully executed in a BAT script 【发布时间】:2017-12-26 06:39:00 【问题描述】:

我正在通过 jenkins 执行 Windows bat 脚本。批处理文件提供了所需的输出,但是构建失败。我的批处理文件是..

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

成功复制文件后,ROBOCOPY 给出退出代码 1。 但是 JENKINS 构建失败并给出以下错误:

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

如果robocopy 退出代码 1,我希望构建成功。

【问题讨论】:

【参考方案1】:

我最好的建议是使用 jenkins-pipeline、try/catch 块,并尽可能少使用 bat 命令(或根本不使用)。

但考虑到您的情况,也有一个简单的解决方案:只需将字段“ERRORLEVEL to set build stable”设置为 1(或其他合适的数字)。如果单击“执行 Windows 批处理命令”块下的“高级”按钮,则会出现该字段:

此方法会将您的构建检查为“不稳定”,但会继续执行。

【讨论】:

我不想让构建失败。Jenkins 成功执行了 bat 文件,但最后将构建标记为失败...@n01d 它将在退出代码 1 上将构建标记为“不稳定”——而不是“失败”。【参考方案2】:

请使用如下避免:

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

即使 robocopy 返回非零错误级别,上述内容仍将继续 jenkins 构建。即使在成功复制后,Robocopy 也不返回 0,因为它比较了两个文件夹。请查找它的返回码以了解更多详细信息

【讨论】:

【参考方案3】:

As mentioned here,要检查的第一个条件是用于运行 Jenkins 的帐户。 键入services.msc 打开 Windows 服务并查找 Jenkins 服务。

不要使用“本地服务帐户”,而是使用您自己的帐户:这样可以避免任何正确的问题。

但是:另一个标准是显示错误代码。 作为mentioned here:

直到“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

这将确保 Jenkins 不会使批处理步骤失败,即使 robocopy 的原始错误级别为 1。

【讨论】:

我已经尝试过了,但它不起作用。我收到与问题中相同的错误消息...@VonC​​pan> @rohit.dagur 您是否尝试检查错误级别并将其设置为 0? 是的...我确实检查了它..并设置了它但我的结果是一样的..@VonC​​pan> @rohit.dagur 你能在脚本末尾添加exit /b 0 吗?

以上是关于即使 ROBOCOPY 命令在 BAT 脚本中成功执行,JENKINS 作业也会失败的主要内容,如果未能解决你的问题,请参考以下文章

TFS中的Robocopy构建PowerShell步骤报告失败但没有错误

bat 脚本执行cmd命令代码实例 执行后不关闭窗口 可以继续输入方法

bat 脚本执行cmd命令代码实例 执行后不关闭窗口 可以继续输入方法

bat 脚本执行cmd命令代码实例 执行后不关闭窗口 可以继续输入方法

有没有办法在 robocopy 脚本中包含带有变音符号的文件路径?

通过 Window 的应用程序报告 Robocopy 成功/失败