如何从执行期间生成的 Json 文件中获取动态值并在 Jenkins 管道的下一个命令中使用它?

问题描述 投票:0回答:1

我有一个脚本,它在 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

它返回“访问被拒绝”响应。

任何人都可以指导如何解决这个问题吗?或者还有其他替代解决方案来处理这个问题吗?

javascript node.js windows jenkins-pipeline batch-processing
1个回答
0
投票

您在 Jenkins 管道中遇到“jq”问题。错误消息“jq 无法识别”。

这里你可以尝试一下,

将“jq”可执行文件的路径添加到系统的 PATH 环境中。

set PATH=%PATH%;C:\Path\To\JqExecutable

将“C:\Path\To\JqExecutable”替换为“jq”安装的实际路径。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.