我有一个脚本,它在 json 文件中生成动态 session_id,执行脚本后我想在下一个命令中使用该 session_id,如下所示是 JSON 文件
"name": "TestName",
"session_id": "51a2ce15-2caf-47e8-9415-405d623b4fb3"
}
我想将其保存在变量 SessionID(或任何其他名称)中,然后想在如下命令中使用
npm run test --session_id %SessionID%
我找到了一个用于处理JSON文件的工具Jq,我将它安装在我的Windows服务器上。
然后在 Jenkins 步骤中我尝试为 jq 执行批处理脚本
steps {
script {
bat "jq .session_id sessionFile.json > out.tmp"
bat "set /p SessionID=<out.tmp"
echo "%SessionID%"
bat "npm run test --session_id %SessionID%"
}
}
但是在 jenkins 控制台日志中获取 jq 无法识别错误。
然后我尝试手动登录服务器并执行命令
jq .session_id sessionFile.json > out.tmp
作为 ADMIN 用户,它工作正常
C:/USERS/AUT >> jq .session_id sessionFile.json > out.tmp
但是对于 Jenkins 来说,它的运行方式是
C:\ProgramData\Jenkins\.jenkins\workspace\OrderCreation
所以尝试了命令
C:\ProgramData\Jenkins\.jenkins\workspace\OrderCreation> jq .session_id sessionFile.json > out.tmp
它返回“访问被拒绝”响应。
任何人都可以指导如何解决这个问题吗?或者还有其他替代解决方案来处理这个问题吗?
您在 Jenkins 管道中遇到“jq”问题。错误消息“jq 无法识别”。
这里你可以尝试一下,
将“jq”可执行文件的路径添加到系统的 PATH 环境中。
set PATH=%PATH%;C:\Path\To\JqExecutable
将“C:\Path\To\JqExecutable”替换为“jq”安装的实际路径。