我们有一台 MacBook,上面装有 Runner for gitlab CI。 有时,管道会失败并出现错误“flutter:找不到命令”。有时它可以正常工作并且所有单元和集成测试都通过。
这种行为的原因是什么?
gitlab-ci.yml 文件是:
before_script:
- flutter channel stable
- flutter upgrade
- flutter pub get
stages:
- test_unit
- test_integration
test_unit:
stage: test_unit
script:
- flutter test
- cd android
- cp ~/builds/QKu8Lg6_/0/mobile/local.properties ~/builds/QKu8Lg6_/0/mobile/app/android
- ./gradlew app:connectedAndroidTest
only:
- merge_requests
except:
- schedules
retry: 2
test_integration:
stage: test_integration
script:
- flutter drive --target=test_driver/app/app.dart
- flutter drive --target=test_driver/app/app.dart -d iPhone Xʀ
- flutter drive --target=test_driver/skill/time/time.dart
- flutter drive --target=test_driver/skill/time/time.dart -d iPhone Xʀ
only:
- schedules
retry: 2
我们解决了!
问题出在默认的 gitlab runner 中,它适用于所有 gitlab 项目。 因此,我们有 2 个运行程序:默认运行程序和 MacBook 的运行程序。 有时,gitlab 在未配置的默认运行器上运行我们的构建,但会失败。
我们从 gitlab 项目中删除了默认运行器,一切都按预期工作!
在运行器机器上安装 flutter 并设置 shell executor 或在 CI 中使用 docker 镜像和 docker executor。