将Shell输出传递给Jenkins作业中的变量

时间:2020-04-23 15:56:07

标签: docker jenkins jenkins-pipeline

我有一个詹金斯脚本化的管道作业。我想将docker inspect命令的输出传递给变量。然后,我想稍后在其他步骤中使用该变量。

以下是将显示Mac地址的命令。我希望此命令的输出存储在变量中。

docker inspect --format='{{range .NetworkSettings.Networks}}{{.MacAddress}}{{end}}' $INSTANCE_ID

我已经尝试过了,但是对我没用。

  output = sh(
  returnStdout: true, 
  script: 'docker inspect --format='{{range .NetworkSettings.Networks}}{{.MacAddress}}{{end}}' $INSTANCE_ID'
  )

谁能建议我这是什么问题,或者建议我以其他方式将输出存储在变量中。

1 个答案:

答案 0 :(得分:4)

问题是您在脚本中使用了单引号,并且还用单引号将其引起来,因此Jenkins正在运行docker inspect --format=,该操作不应返回任何内容。尝试用双引号包装脚本

output = sh(
  returnStdout: true, 
  script: "docker inspect --format='{{range .NetworkSettings.Networks}}{{.MacAddress}}{{end}}' $INSTANCE_ID"
  )