如何从作业中设置环境变量并在jenkins的下一个作业中使用它?

时间:2015-09-30 05:22:47

标签: jenkins jenkins-plugins jenkins-workflow

我想要一份工作来设置环境变量,并在所有下一个工作中使用这些环境变量。如何通过Jenkins设置环境变量?

3 个答案:

答案 0 :(得分:8)

从技术上讲,你不能将env变量从一个作业传递到下一个作业,而且我也不知道有一个插件可以开箱即用。

然而,有一种技术。我们的想法是在第一个作业中创建一个属性文件(例如exported.properties),将该文件添加到作业工件,然后通过第二个作业中的EnvInject plugin导入该文件。

这预先假设您在第一个和第二个作业之间有一些链接,这通常使用Copy Artifact插件实现,但是许多类似工作流程的插件也可以帮助您。

例如,要创建属性文件,请添加一个步骤"执行shell",例如。

echo "# Saving some version properties
BUILD_VERSION=${BuildVersion}
BUILD_NODE_NAME=${NODE_NAME}
SOURCE_JOB=${JOB_NAME}
" > ${WORKSPACE}/BuildVersion.properties

当然,您可以使用其他构建步骤,例如Windows shell,groovy脚本等......当然每个都有其特定的语法。

答案 1 :(得分:0)

根据您的使用情况,有两种方法可以做: -

1)EnvfilePlugin -

如果你的环境变量是常量并且没有动态更改/动态那么你可以将它们保存在文本文件中并在Jenkins作业配置页面中给出该文件的誓言。 在构建环境下,检查通过文件设置环境变量。 在这里给出该文件的路径。

如果在第一个作业中创建了环境变量,那么您可以再次将所有环境变量保存在文件中并使用上述方法进行浏览。

2)EnvInject plugin -

安装此插件并转到作业配置paeg。选择“为运行准备一个环境”并保存Patrice在上面的答案中提到的属性,同时指定脚本的路径和其他细节。

答案 2 :(得分:0)

您可以对下游作业进行参数化(在作业配置页面中添加参数),然后从上游Workflow作业触发此作业,工作流脚本将是这样的:

build job: 'my-downstream-job', parameters: 
    [[$class: 'StringParameterValue', name: 'MY_VAR', value: 'Hello world!']]

然后,您可以根据需要在MY_VAR中使用my-downstream-job