2017-06-12 97 views
2

我正在使用Gitlab 8.15.4以及該版本的最新版本。由於我們的防火牆,我無法運行npm install,因此我將節點模塊從其他位置複製到構建文件夾中。跑步者在Windows 7機器上。如何阻止robocopy退出構建?

我第一次嘗試: (.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在完成時退出構建?

回答

3

你和很多其他人在CI配置中遇到了robocopy的這個問題。由於我發現這個問題在一段時間內沒有得到答覆,其他答案與在robocopy之後繼續執行腳本不兼容,我想在此分享解決方案。

如果您希望robocopy忽略8以下的所有返回碼(> = 8表示複製錯誤),則需要一個直接跟隨命令並更改錯誤級別的條件。

(robocopy src dst) ^& IF %ERRORLEVEL% LSS 8 SET ERRORLEVEL = 0 
+0

成功通過Windows Server 2008和gitlab-runner 10.4測試 – radomeit