0

我正在尝试让 Jenkins 工作来运行 sfdx force:data:soql:query 命令,以便在刷新后在我们的生产组织和沙箱之间迁移配置数据集。某些配置不会在刷新时持续存在,因此我们需要一种方法来移动该数据。

从 Jenkins 服务器上的命令行运行查询按预期工作,但是运行时的作业失败并出现以下错误:

'C:\Program' is not recognized as an internal or external command, operable program or batch file.
Build step 'Execute shell' marked build as failure

该作业做了三件事:授权 DevHub,列出连接的组织,然后执行 SQOL 查询以打印一些数据 - 准确地说是 16 行。以下是作业的 shell 脚本中的命令:

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

我完全不知道为什么会这样。同样,通过 PowerShell 或命令行直接在服务器上运行 SOQL 命令可以按预期工作。我将不胜感激。

4

1 回答 1

0

这个问题困扰了我很长时间,但我们终于弄明白了。

如果您看到此错误,请务必检查您机器的环境变量。我看到大量其他答案指出这是一个问题,即 SFDX 路径名的安装在 C:|P:rogram Files\SFDX\bin 中包含空格,但只显示了一些没有意义的奇怪命令行 FOR 循环怎么回事。

我们所做的是完全卸载所有 SFDX,确保没有任何东西留在机器上,然后重新安装到我们创建的文件夹中,该文件夹的路径名中没有空格。

一旦我们这样做了,我们的工作就会像预期的那样工作。我希望这可以帮助遇到同样问题的其他人。

于 2021-12-13T16:26:57.317 回答