如何阻止 robocopy 退出构建?
How to stop robocopy from exiting the build?
我正在为该构建使用 Gitlab 8.15.4 和最新的 运行ner。由于我们的防火墙,我无法 运行 npm install 所以我将节点模块从另一个位置复制到构建文件夹中。 运行ner 在 Windows 7 机器上。
我的第一次尝试:
(.gitlab-ci.yml)
before_script:
- robocopy S:\Storage\GitLab-Runner\Assets\node_modules .\node_modules /s
build:
stage: build
script:
- echo starting
- gulp
- echo done
artifacts:
paths:
- deploy.zip
构建失败并出现错误:
ERROR: Job failed: exit status 1
我的第二次(第 n 次)尝试将 robocopy 放入脚本文件并从那里执行:
(.gitlab-ci.yml)
before_script:
- S:\Storage\GitLab-Runner\Scripts\CopyAssets.bat
build:
stage: build
script:
- echo starting
- gulp
- echo done
artifacts:
paths:
- deploy.zip
(CopyAssets.bat)
robocopy S:\Storage\GitLab-Runner\Assets\node_modules .\node_modules /s
set/A errlev="%ERRORLEVEL% & 24"
exit/B %errlev%
通过但不执行任何其他步骤。
如何防止 RoboCopy 在构建完成后退出?
您和许多其他人在 CI 部署中遇到过 robocopy 的这个问题。由于我发现这个问题有一段时间没有得到解答,并且其他答案与在 robocopy 之后继续脚本不兼容,所以我想在这里分享解决方案。
如果想让robocopy忽略所有return 8以下的代码(>=8表示复制错误),需要一个条件直接跟在命令后面,改变错误级别
(robocopy src dst) ^& IF %ERRORLEVEL% LSS 8 SET ERRORLEVEL = 0
Powershell 用户:
(robocopy src dst) ; if ($lastexitcode -lt 8) { $global:LASTEXITCODE = $null }
或
cmd /c (robocopy src dst) ^& IF %ERRORLEVEL% LEQ 1 exit 0
我已经使用 GitLab Runner powershell 在 GitLab 13.12 上进行了测试,它运行良好。
我正在为该构建使用 Gitlab 8.15.4 和最新的 运行ner。由于我们的防火墙,我无法 运行 npm install 所以我将节点模块从另一个位置复制到构建文件夹中。 运行ner 在 Windows 7 机器上。
我的第一次尝试: (.gitlab-ci.yml)
before_script:
- robocopy S:\Storage\GitLab-Runner\Assets\node_modules .\node_modules /s
build:
stage: build
script:
- echo starting
- gulp
- echo done
artifacts:
paths:
- deploy.zip
构建失败并出现错误:
ERROR: Job failed: exit status 1
我的第二次(第 n 次)尝试将 robocopy 放入脚本文件并从那里执行:
(.gitlab-ci.yml)
before_script:
- S:\Storage\GitLab-Runner\Scripts\CopyAssets.bat
build:
stage: build
script:
- echo starting
- gulp
- echo done
artifacts:
paths:
- deploy.zip
(CopyAssets.bat)
robocopy S:\Storage\GitLab-Runner\Assets\node_modules .\node_modules /s
set/A errlev="%ERRORLEVEL% & 24"
exit/B %errlev%
通过但不执行任何其他步骤。
如何防止 RoboCopy 在构建完成后退出?
您和许多其他人在 CI 部署中遇到过 robocopy 的这个问题。由于我发现这个问题有一段时间没有得到解答,并且其他答案与在 robocopy 之后继续脚本不兼容,所以我想在这里分享解决方案。
如果想让robocopy忽略所有return 8以下的代码(>=8表示复制错误),需要一个条件直接跟在命令后面,改变错误级别
(robocopy src dst) ^& IF %ERRORLEVEL% LSS 8 SET ERRORLEVEL = 0
Powershell 用户:
(robocopy src dst) ; if ($lastexitcode -lt 8) { $global:LASTEXITCODE = $null }
或
cmd /c (robocopy src dst) ^& IF %ERRORLEVEL% LEQ 1 exit 0
我已经使用 GitLab Runner powershell 在 GitLab 13.12 上进行了测试,它运行良好。