使用Gitlab作业失败

时间:2020-07-12 06:55:22

标签: android android-ndk gitlab yaml gitlab-ci

我已经使用Gitlab来运行CI计划。

问题序列:

  1. 使用以下yaml脚本运行CI计划,现在CI已通过

  2. 再次运行CI计划,现在CI失败,并显示以下错误代码

    警告:未能删除MediaDrmCts / app / build / outputs / apk / debug / output.json:无效的参数

环境: Windows PC中的Gitlab运行程序 壳

Yaml代码:

assembleDebug:
  stage: build
  script:
    - echo 'start building...'
    - cd MediaDrmCts
    - ./gradlew clean assemble
  artifacts:
    paths:
      - MediaDrmCts/app/build/outputs/

debugTests:
  stage: test
  script:
    - cd MediaDrmCts
    - ./gradlew -Pci --console=plain :app:testDebug

错误日志: error log

请帮助我们解决问题?

1 个答案:

答案 0 :(得分:0)

这可能与GitLab中Windows上的终止进程有关的问题:

tl; dr Windows运行程序(当前版本为〜13.6左右,尚无修复)无法正确终止作业中启动的整个进程树,因此保留了文件锁的进程以便下一个作业/管道在尝试清理时失败

过去我也遇到过类似的问题,一种解决方法是清理作业中麻烦的目录,而不是让git clean命令在下一个作业中清理它们。

一个选项:

debugTests:
  stage: test
  script:
    - cd MediaDrmCts
    - ./gradlew -Pci --console=plain :app:testDebug
  after_script:
    - if (Test-Path ./MediaDrmCts/app/build) { Remove-Item ./MediaDrmCts/app/build -Recurse -Force; }
...

另一个选项

如果您的构建版本对repo文件夹的清洁程度不敏感,则可以尝试关闭git clean -ffdx文件中的.gitlab-ci.yml步骤:

...
variables:
  GIT_CLEAN_FLAGS: none
...

这将告诉GitLab运行程序不要在每次运行之前尝试清理额外文件的存储库。

请记住,这可能会带来一些意想不到的后果,例如先前在其他分支上运行时遗留的错误文件,因此请多加注意并进行良好的测试!