【发布时间】:2015-12-27 18:48:45
【问题描述】:
我想要一份工作来设置环境变量并在接下来的所有工作中使用这些环境变量。如何通过 Jenkins 设置环境变量?
【问题讨论】:
标签: jenkins jenkins-plugins jenkins-workflow
我想要一份工作来设置环境变量并在接下来的所有工作中使用这些环境变量。如何通过 Jenkins 设置环境变量?
【问题讨论】:
标签: jenkins jenkins-plugins jenkins-workflow
从技术上讲,您不能将环境变量从一项工作传递到下一项工作,而且我不知道有一个插件可以开箱即用地做到这一点。
但是有一种技术。想法是在第一个作业中创建一个属性文件(例如exported.properties),将该文件添加到作业工件中,然后在第二个作业中通过EnvInject plugin 导入该文件。
这假设您在第一份工作和第二份工作之间有某种联系,这通常是通过 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 脚本等...当然每个都有其特定的语法。
【讨论】:
根据您的用例,有两种方法:-
1) EnvfilePlugin -
如果您的环境变量是恒定的并且不会动态/动态更改,则安装此插件,然后您可以将它们保存在文本文件中,并在 Jenkins 作业配置页面中宣誓该文件。 在构建环境下检查通过文件设置环境变量。 在此处给出该文件的路径。
如果环境变量是在第一个作业中创建的,那么您可以再次将所有环境变量保存在一个文件中并使用上述方法浏览它。
2) EnvInject plugin-
安装此插件并进入作业配置页面。选择“Prepare an environment for the run”并保存Patrice在上述答案中提到的属性,还指定脚本的路径和其他详细信息。
【讨论】:
您可以将下游作业参数化(在作业配置页面中添加参数),然后从上游 Workflow 作业触发此作业,工作流脚本将如下所示:
build job: 'my-downstream-job', parameters:
[[$class: 'StringParameterValue', name: 'MY_VAR', value: 'Hello world!']]
然后您可以根据需要在您的my-downstream-job 中使用MY_VAR。
【讨论】: