詹金斯 - 简单地在詹金斯的机器人完成标记失败

use*_*244 15 batch-file exit-code robocopy jenkins

我有一个简单的Windows批处理命令(robocopy)返回零错误,但在Jenkins中始终标记为失败.我想知道为什么?

D:\ Jenkins\jobs\Jenkins Config Backup\workspace> exit 1构建步骤'执行Windows批处理命令'将构建标记为失败完成:FAILURE

Rob*_*Fey 20

robocopy返回一个位图

有关详细信息,请参阅此处:http://ss64.com/nt/robocopy-exit.html

总结:所有退出代码最多为'3'都没问题.

这是我经常使用的批处理文件代码:

set SOURCE= ...
set DESTINATION= ...

robocopy /MIR /LOG:example.robocopy.log.txt %SOURCE% %DESTINATION%
@echo robocopy exit code: %ERRORLEVEL%
@if %ERRORLEVEL% GTR 3 ( echo robocopy ERROR )
@if %ERRORLEVEL% GTR 3 ( exit %ERRORLEVEL% )
@set ERRORLEVEL=0
Run Code Online (Sandbox Code Playgroud)

你也可以做一个"转到"但不退出.


Pet*_*tze 12

当批处理脚本的现有代码不为0时,Jenkins将构建标记为失败.如果robocopy是脚本中的最后一个命令,则将获取robocopy退出代码.

Robocopy不遵守标准,即除0之外的退出代码表示构建失败.您需要评估robocopy退出代码并使用exit 0exit 1取决于robocopy的成功结束脚本.

看看robocopy退出代码.


Gas*_*rdP 6

更新jenkins管道的这个问题 - 这对我有用:

    def robocopy(cmd)
    {
        // robocopy uses non-zero exit code even on success, status below 3 is fine
        def status = bat returnStatus: true, script: "ROBOCOPY ${cmd}"
        println "ROBOCOPY returned ${status}"
        if (status < 0 || status > 3)
        {
            error("ROBOCOPY failed")
        }
    }
Run Code Online (Sandbox Code Playgroud)

或者,您可能希望查看文件操作插件