Gitlab Runner执行CI提示Flutter SDK版本0.0.0-unknown如何修复
问题现象
使用Gitlab Runner执行.gitlab-ci.yml配置的CI/CD流程时,flutter pub get环节执行失败,报错信息如下:
No dependencies changed. 1 package is discontinued. 57 packages have newer versions incompatible with dependency constraints. Try `dart pub outdated` for more information. Running "flutter pub get" in tardis... The current Flutter SDK version is 0.0.0-unknown. Because newApp depends on workmanager >=0.2.3 which requires Flutter SDK version >=1.10.0, version solving failed.
本地开发环境执行flutter doctor检测无异常,输出如下:
[√] Flutter (Channel stable, 2.10.5, on Microsoft Windows [Version 10.0.19044.1766], locale tr-TR) [√] Android toolchain - develop for Android devices (Android SDK version 32.0.0) [√] Chrome - develop for the web [√] Visual Studio - develop for Windows (Visual Studio Community 2019 16.9.1) [√] Android Studio (version 2020.3) [√] VS Code (version 1.68.1) [√] Connected device (3 available) [√] HTTP Host Availability • No issues found!
报错核心逻辑:CI环境识别到的Flutter SDK版本为0.0.0-unknown,不满足项目依赖workmanager >=0.2.3要求的Flutter SDK >=1.10.0版本约束,最终依赖解析失败,本质是Gitlab Runner运行环境无法正确识别已安装的Flutter版本。
解决方案
按以下优先级逐一排查处理:
- 排查Gitlab Runner环境变量加载问题
本地Flutter的路径通常配置在当前登录用户的用户级PATH中,如果Gitlab Runner是作为Windows系统服务安装,默认会使用SYSTEM账户运行,不会加载普通用户的PATH配置,无法定位到正确的Flutter可执行文件,读取不到版本信息时就会返回0.0.0-unknown。
处理步骤:- 将Flutter SDK下
bin目录的完整路径添加到系统级PATH环境变量中,不要仅配置在当前用户的用户变量下 - 重启Gitlab Runner服务,确保新配置的环境变量被正常加载
- 在CI脚本最开头添加
flutter --version命令,提前确认版本识别正常后再执行后续构建流程
- 将Flutter SDK下
- 显式指定Flutter可执行文件的完整路径
Windows环境下的Shell类型Runner偶尔会出现路径匹配异常,可直接在CI命令中写入Flutter可执行文件的全路径,例如C:\dev\flutter\bin\flutter.bat pub get,不要直接使用短命令flutter - 检查Flutter SDK目录权限
确认Gitlab Runner的运行账户对整个Flutter安装目录有读取、执行权限,权限不足时Flutter无法读取根目录下的version版本标识文件,同样会返回未知版本号 - CI流程自动拉取Flutter源码时必须执行初始化
如果CI流程包含自动拉取Flutter源码的步骤,刚拉取的源码未完成初始化,不会生成版本标识文件,必须先在源码目录执行一次flutter doctor完成初始化,再执行pub get等后续命令
修复验证标准:在CI脚本的依赖拉取步骤前执行
flutter --version,能正常输出本地对应的2.10.5稳定版本号时,后续依赖解析流程就不会再触发该报错。
内容的提问来源于stack exchange,提问作者erdemsaray
相关产品推荐
相关产品推荐

