Jenkins运行sfdx SOQL查询报'C:\Program'未识别错误求助
问题根因
你遇到的'C:\Program' is not recognized报错是Windows系统下典型的路径含空格未正确转义问题。你本地命令行/PowerShell执行正常是因为当前用户的环境变量PATH中已经正确注册了sfdx的安装路径,而Jenkins执行Job时默认使用独立的系统环境变量/服务账号环境变量,无法正确识别带空格的sfdx安装路径。
修复方案
- 方案1:直接使用全路径调用sfdx,将带空格的路径用双引号包裹。首先在你测试正常的服务器命令行执行
where sfdx获取sfdx的完整安装路径,默认路径为C:\Program Files\sfdx\bin\sfdx.exe,替换脚本中的sfdx为全路径即可:
"C:\Program Files\sfdx\bin\sfdx.exe" force:auth:jwt:grant -i ${CONNECTED_APP_CONSUMER_KEY} -u ${DEV_HUB} -f ${JENKINS_HOME}/certs/prod/server.key -r [...] -a DevHub "C:\Program Files\sfdx\bin\sfdx.exe" force:org:list "C:\Program Files\sfdx\bin\sfdx.exe" force:data:soql:query -u ${DEV_HUB} -q "SELECT Id, Name FROM [...tablename...]" -r human
- 方案2:在Job的shell脚本最开头优先将sfdx路径加入当前执行环境的PATH变量:
set PATH="C:\Program Files\sfdx\bin";%PATH% sfdx force:auth:jwt:grant -i ${CONNECTED_APP_CONSUMER_KEY} -u ${DEV_HUB} -f ${JENKINS_HOME}/certs/prod/server.key -r [...] -a DevHub sfdx force:org:list sfdx force:data:soql:query -u ${DEV_HUB} -q "SELECT Id, Name FROM [...tablename...]" -r human
- 额外校验项:确认Jenkins Job调度的执行节点就是你本地测试过sfdx可正常运行的服务器,避免任务被调度到未安装sfdx的其他节点执行。如果仍有异常,可以在脚本开头加一行
where sfdx,执行Job后查看输出的sfdx路径是否符合预期。
内容的提问来源于stack exchange,提问作者Finnster
相关产品推荐
相关产品推荐

