android - 使用 Gitlab 作业失败
问题描述
我已经使用 Gitlab 来运行 CI 计划。
问题顺序:
使用以下 yaml 脚本运行 CI 计划,现在 CI 已通过
再次运行 CI 计划,现在 CI 失败并出现以下错误代码
警告:删除 MediaDrmCts/app/build/outputs/apk/debug/output.json 失败:参数无效
环境: Windows PC Shell 中的 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
请帮助我们解决问题?
解决方案
这可能与 GitLab 中在 Windows 上杀死进程的问题有关:
tl;dr windows runner(当前版本约为 13.6,尚未修复)无法正确终止在作业中启动的完整进程树,因此保留文件锁的进程留待下一个作业/管道失败当它试图清理
- https://gitlab.com/gitlab-org/gitlab-runner/-/issues/3185
- https://gitlab.com/gitlab-org/gitlab-runner/-/issues/3121
过去我遇到过类似的问题,解决方法是清理制作它们的作业中的麻烦目录,而不是让 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 运行器在每次运行之前不要尝试清理额外文件的存储库。
请记住,这可能会产生一些意想不到的后果,例如以前在其他分支上运行时遗留的错误文件,所以要小心,并进行良好的测试!
推荐阅读
- oracle - 下一个查询看不到以前的单个 SQL 文件 - PL/SQL
- azure-service-fabric - Test-ServiceFabricApplicationPackage Settings.xml 已经存在
- firebase - 为什么我的 PWA 不能在 Safari 和 Opera 上运行?它显示“无法建立与服务器的安全连接”
- c# - 为什么 .Net NPOI CloneStyleFrom() 不能正确应用 Font BoldWeight?
- python - 如何将 240*240*4 的 np 数组打印或转换为 240*240*1?
- unity3d - Unity:将 3d 对象投影/绘制到 2d 平面上
- bash - Bash -c 参数传递给 find
- spring-boot - Spring Cloud Stream:@StreamListener 处理消息两次
- sql - 如果基于此脚本设置回滚事务,脚本是否会获取光标中的下一项?
- css - 为什么 Devextreme 网格溢出它的父容器,为什么它没有创建垂直滚动条?