Jenkins构建Flutter应用提示flutter not found问题求助
问题原因及解决方案
错误原因分析
- 环境变量路径含多余空格:你定义的
flutter环境变量开头有个空格,导致实际路径变成/Users/username/Desktop/flutter(带前导空格),Shell执行时会把这个带空格的路径当作不存在的文件。 - 路径指向错误:
$flutter指向的是Flutter的安装目录,而不是可执行文件的路径。Flutter的可执行文件在${flutter}/bin/flutter,直接用目录执行自然会提示"not found"。 - PATH配置不匹配:
withEnv里添加的/opt/flutter/bin和你实际的Flutter安装路径/Users/username/Desktop/flutter/bin不一致,导致系统找不到flutter命令。 - 多阶段路径未统一:TEST和BUILD阶段没有配置正确的Flutter路径,后续执行也会失败。
修正后的流水线脚本
pipeline { agent { label "macos16Node" } environment { // 去掉路径开头的空格,指向正确的Flutter安装目录 FLUTTER_HOME = "/Users/username/Desktop/flutter" } stages { stage ('Flutter Doctor') { steps { // 将Flutter的bin目录加入PATH,全局可用flutter命令 withEnv(["PATH+FLUTTER=${FLUTTER_HOME}/bin"]){ sh 'flutter doctor -v' } } } stage('GIT PULL') { steps { git branch: 'main', credentialsId: 'github_token', url: 'mygitrepo' } } stage('TEST') { steps { withEnv(["PATH+FLUTTER=${FLUTTER_HOME}/bin"]){ sh 'flutter test' } } } stage('BUILD') { steps { withEnv(["PATH+FLUTTER=${FLUTTER_HOME}/bin"]){ sh ''' #!/bin/sh flutter build apk --debug ''' } } } } }
关键修改说明
- 修正环境变量:将
flutter重命名为FLUTTER_HOME(更符合规范),并去掉路径开头的空格,确保路径准确。 - 统一PATH配置:所有需要执行
flutter命令的阶段,都通过withEnv将${FLUTTER_HOME}/bin加入PATH,这样直接用flutter命令即可,无需写完整路径。 - 避免硬编码错误:不再使用错误的目录路径执行命令,而是通过PATH让系统找到正确的可执行文件。
如果不想每个阶段都写withEnv,也可以在全局environment里直接配置PATH:
environment { FLUTTER_HOME = "/Users/username/Desktop/flutter" PATH = "${FLUTTER_HOME}/bin:${PATH}" }
这样所有阶段都能直接使用flutter命令,无需重复配置。
内容的提问来源于stack exchange,提问作者Sagar Acharya
相关产品推荐
相关产品推荐

