我有一个 JSON 文件,其结构如下:
{
"name":"John",
"address": "24th Avenue"
}
我试图在一个 Jenkinsfile 阶段中从这个 JSON 文件中提取地址信息,并将其分配给一个变量,并在以下步骤中使用该变量,我的代码如下:
parameters {
string(
name: 'json_file_location',defaultValue:"config.json")
}
stages {
stage("read json file"){
steps {
sh """
address=jq -r '.address' ${params.json_file_location}
"""
}
}
stage("print"){
steps {
sh """
echo "$address"
"""
}
}
}
但是上面的代码无法将
jq
结果正确分配给地址变量,我也尝试过here描述的方法。但还是不行。
将
jq
结果分配给变量以便我可以在不同阶段重用它的正确方法是什么?
正如 @Benjamin W 的评论中提到的,这里的问题是您当前正在设置一个 bash shell 变量
address
但这仅在该步骤的范围内,您正在寻找的是设置一个 groovy 方法shell 步骤的 stdOut。
所以说:
address = sh (
returnStdout: true,
script: "jq -r '.address' ${params.json_file_location}"
).trim()
应该为你创建一个常规变量,以便你稍后可以在 Jenkinsfile 中使用。