将变量从shell脚本传递给jenkins

时间:2015-05-07 20:17:22

标签: jenkins jenkins-plugins

我从Jenkins触发一个shell脚本,这个脚本获取日期并将其导出为环境(Linux)变量$ DATE。我需要在同一个Jenkins工作中使用这个$ DATE。我做了参数构建工作。创建一个字符串参数作为DATE值DATE = $ DATE。但它没有用。

请建议!!

2 个答案:

答案 0 :(得分:73)

您提到您正在shell脚本中导出DATE环境变量,这可能是通过“执行shell”步骤启动的。

问题是,一旦shell步骤完成,该环境就消失了 - 变量将不会转移到后续构建步骤。
因此,当您稍后尝试使用$DATE值时 - 无论是在另一个构建步骤中,还是作为另一个作业的参数 - 该特定环境变量将不再存在。

您可以做的是在构建期间使用EnvInject plugin导出环境变量。使用此插件设置的变量将可用于所有后续构建步骤。

例如,您可以在一个构建步骤中将DATE写入属性字段:

echo DATE=$(date +%Y-%m-%d) > env.properties

然后,您可以添加“为作业注入环境变量”构建步骤,并在“环境属性文件路径”字段中输入env.properties

这样,DATE变量(以及该属性文件中的任何其他内容)将被导出,并且对其余构建步骤可见。

答案 1 :(得分:0)

您可以使用赋值语句和sh的returnStdout来获取Jenkins中的值,而无需写入属性文件。

foo = sh(
  returnStdout: true, 
  script: 'date'
)

然后稍后在Jenkinsfile中,您可以像其他变量一样使用$ foo。

编辑:这是针对管道作业,而不是自由式作业。