我在TFS Builds中设置了一个命令行阶段来执行Robocopy,尽管执行过程中没有错误,但它返回了错误代码1。
如果我直接在Cmd中运行Robocopy命令,它将起作用,并且作业日志显示Robocopy一直工作到最后:
main
答案 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构建将不会失败。