8

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

4

3 回答 3

10

从技术上讲,您不能将环境变量从一个工作传递到下一个工作,而且我不知道有一个插件可以开箱即用地做到这一点。

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

这假设您在第一份工作和第二份工作之间有一些联系,这通常是通过Copy Artifact插件实现的,但一些类似工作流的插件也可以帮助您。

例如,为了创建属性文件,添加一个步骤“Execute shell”,例如

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

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

于 2015-09-30T05:29:38.043 回答
0

根据您的用例,有两种方法:-

1)EnvfilePlugin -

如果您的环境变量是恒定的并且不会即时更改/动态,请安装此插件,然后您可以将它们保存在文本文件中,并在 Jenkins 作业配置页面中宣誓文件。在构建环境下检查通过文件设置环境变量。在此处给出该文件的路径。

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

2) EnvInject 插件-

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

于 2015-09-30T07:02:04.890 回答
0

您可以将下游作业参数化(在作业配置页面中添加参数),然后从上游工作流作业触发此作业,工作流脚本将如下所示:

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

然后你可以MY_VAR在你的my-downstream-job.

于 2015-09-30T16:55:06.790 回答