当前位置: 首页 > 知识库问答 >
问题:

如何从Groovy脚本中访问jenkins构建环境变量

涂羽
2023-03-14

我们有一个Jenkins构建,它在Jenkins1.596.2上成功运行,我们正在迁移到运行Jenkins2.60.1的新构建机器

作为构建html" target="_blank">配置的一部分,我们有一个可扩展的Choice参数,并使用系统Groovy Choice参数作为选择提供者。然后,我们使用Groovy脚本获取选择列表。

此Groovy脚本需要访问Jenkins构建环境变量之一,该变量设置在构建配置的全局属性部分(在环境变量下)。

在Jenkins的早期版本中,我们可以使用以下代码获得此环境变量值:

import hudson.slaves.EnvironmentVariablesNodeProperty
import hudson.EnvVars

EnvironmentVariablesNodeProperty prop = jenkins.getGlobalNodeProperties().get(EnvironmentVariablesNodeProperty.class)
EnvVars env = prop.getEnvVars()

def myVariable = env['MY_VAR']

但是,当我们在新的Jenkins构建下运行它时,我们会得到以下错误:

groovy.lang.MissingPropertyException: No such property: jenkins for class: Script1

有人能解释一下我们需要做什么才能从Groovy脚本中访问Jenkins构建环境变量吗?

我们是否缺少提供对“jenkins”对象/变量的访问的插件或导入?

我在网上找到了一些答案,但没有一个有效的解决方案。我猜我的Groovy脚本无法访问促进这些解决方案所需的内容。

顺便说一句,当问题是某些东西受到限制时,我确实会转到服务器的进程内脚本批准页面并允许该项目。

共有1个答案

狄阳秋
2023-03-14

我有以下代码。。

import hudson.model.BuildableItem
import hudson.model.Job
import jenkins.model.*;


jenkins = Jenkins.instance;

这用于一些较新的(2.60.3)版本的Jenkins

 类似资料:
  • 问题内容: 我正在使用Scriptler插件,因此可以在构建步骤中运行groovy脚本。我的Jenkins奴隶正在服务模式下的Windows上运行。使用脚本编辑器,我不需要使用Windows批处理脚本。 但是我很难在构建步骤中获取环境变量。 哪里是将env-瓦尔对詹金斯启动部分。但是,我想得到 如果要添加“执行Windows批处理命令”构建步骤: 有用。如果要添加具有相同设置的脚本程序脚本作为构建

  • 我使用脚本插件,所以我可以运行一个Groovy脚本作为构建步骤。我的Jenkins奴隶在服务模式下的窗口上运行。有了脚本,我不需要使用窗口批处理脚本。 但是我很难在构建步骤中获取环境变量…这是有效的: 其中 是 enkins 初创公司 env-vars 的一部分。但是,我想得到 如果我添加“执行 Windows 批处理命令”构建步骤: 它起作用了。如果我添加一个脚本脚本作为具有相同设置的构建步骤:

  • 我必须从我的 Groovy 脚本访问一个环境变量。我没有使用詹金斯。如何获取变量?

  • 我正在尝试运行一个groovy脚本,该脚本正在更新构建。说明在从属节点上运行进程时执行期间。 我的问题是系统groovy脚本仅在主节点上执行,而Jenkinsgroovy脚本在从节点上运行,但无法访问变量。 我有一个类似的脚本: 有没有办法修改在从服务器上运行的“JenkinsGroovy脚本”上的构建变量? 提前感谢!

  • 问题内容: 我有一个时髦的脚本去推广代码。长话短说,我知道该脚本中的某个时间点是否成功。如果不成功,我想使构建失败。有什么办法使构建失败? 例: 在“执行Groovy脚本”插件中。您可以编写代码。 其中,“ checkPromote”根据促销的状态返回true或false值。 问题答案: 我认为,中止程序的最优雅方法是声明。

  • 我有一个时髦的脚本,可以推广代码。长话短说,我知道在那个脚本中的某个时间点它是否成功。如果不成功,我想使构建失败。有没有办法在时髦中失败构建? 示例: 在“执行 Groovy 脚本”插件中。您可以编写代码。 其中“checkPromote”根据升级的状态返回true或false值。