在 Groovy 中访问 Jenkins 全局属性

Kon*_*ngh 5 groovy global-variables jenkins

此时,我在管理 Jenkins -> 配置系统 -> 全局属性下定义了一个名为 GLOBAL_VAR 的环境变量,其值为“test”。当项目正在构建时,我有一个 shell 脚本,其中包含

echo "The value of the global variable is ${GLOBAL_VAR}"
Run Code Online (Sandbox Code Playgroud)

如果执行的话,结果就是我所期望的:

The value of the global variable is test
Run Code Online (Sandbox Code Playgroud)

现在我的问题是我想在 Groovy 脚本中访问此变量,该脚本用于在 Jenkins 的参数化构建属性中创建下拉菜单。此下拉菜单包含在执行构建时执行的 shell 脚本中也使用的值。因此,当有人在 Jenkins 本身中单击“使用参数构建”时,应该创建下拉项,例如在启动任何构建之前

我不想每次想要更改这些值时都更改 shell 脚本代码和下拉 Groovy 脚本。此外,我想在不同的构建作业中使用相同的值,这意味着每次需要更改变量时都需要更改它们。

创建下拉菜单的动态选择参数仅包含以下 Groovy 表达式来生成选项:

 def list = ["Option 1", "Option 2", "Option 3", "Option 4"]
Run Code Online (Sandbox Code Playgroud)

我想将 GLOBAL_VAR 的值添加到此列表中。

有谁知道如何在 Groovy 中访问 Jenkins 环境变量?或者有谁知道管理我想在动态选择参数(下拉菜单)和构建时执行的 shell 脚本中使用的变量的不同方法?

小智 5

这是一些工作代码的示例:

import jenkins.model.*
nodes = Jenkins.instance.globalNodeProperties
nodes.getAll(hudson.slaves.EnvironmentVariablesNodeProperty.class)
envVars = nodes[0].envVars
envVars['MY_GLOBAL_PROPERTY']
Run Code Online (Sandbox Code Playgroud)

我的解决方案的来源:

https://gist.github.com/johnyzed/2af71090419af2b20c5a

http://pghalliday.com/jenkins/groovy/sonar/chef/configuration/management/2014/09/21/some-useful-jenkins-groovy-scripts.html

请注意删除我之前答案的“硬核”版主:我花了相当多的时间在互联网上搜索才找到正确的解决方案,你不应该在不知道它真正在说什么的情况下删除帖子。我发现这种行为相当令人沮丧:(


rri*_*wer 0

有谁知道如何访问groovy中的Jenkins环境变量?

我可以提供一个我们使用的 Jenkins 作业的示例。该作业是参数化的,并为用户提供了设置许多值的能力,其中之一是“InstallVersion”(默认值为-1)。此外,我们设置了一个名为“JENKINS_TRUNK_LABEL”的环境变量。我不会详细介绍这项工作,但是,以下是我们在 Groovy 脚本中引用“JENKINS_TRUNK_LABEL”的方式。

if (InstallVersion == "-1")
{
  InstallVersion = "$JENKINS_TRUNK_LABEL"
}
Run Code Online (Sandbox Code Playgroud)