从TFS内部版本使用Robocopy失败

时间:2019-02-27 10:01:06

标签: tfs azure-devops robocopy

我在TFS Builds中设置了一个命令行阶段来执行Robocopy,尽管执行过程中没有错误,但它返回了错误代码1。

如果我直接在Cmd中运行Robocopy命令,它将起作用,并且作业日志显示Robocopy一直工作到最后:

main

这是有关Build配置的图像: enter image description here

2 个答案:

答案 0 :(得分:0)

RoboCopy的ExitCodes>0。

在您的示例中,Exit Code = 1表示一个或多个文件已成功复制(也就是说,新文件已到达)


要解决此问题,您可以创建一个Powershell脚本,该脚本执行副本并覆盖退出代码。

喜欢

param( [String] $sourcesDirectory, [String] $destinationDirectory, [String] $attributes)

robocopy $sourcesDirectory $destinationDirectory $attributes

if( $LASTEXITCODE -ge 8 )
{
    throw ("An error occured while copying. [RoboCopyCode: $($LASTEXITCODE)]")
}
else
{
    $global:LASTEXITCODE = 0;
}

exit 0

答案 1 :(得分:0)

robocopy使用不同的错误代码,错误代码1并不是真正的错误,只是说一个或多个文件已成功复制。

TFS将错误代码1识别为实际错误,并使构建失败。

要解决此问题,您需要更改robocopy错误代码:

(robocopy c:\dirA c:\dirB *.*) ^& IF %ERRORLEVEL% LEQ 1 exit 0

^& IF %ERRORLEVEL% LEQ 1 exit 0将错误代码1转换为0,然后TFS构建将不会失败。