我已经使用Gitlab来运行CI计划。
问题序列:
使用以下yaml脚本运行CI计划,现在CI已通过
再次运行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
请帮助我们解决问题?
答案 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运行程序不要在每次运行之前尝试清理额外文件的存储库。
请记住,这可能会带来一些意想不到的后果,例如先前在其他分支上运行时遗留的错误文件,因此请多加注意并进行良好的测试!