【问题标题】:How to get values of env vars by writing groovy script on jenkins script console?如何通过在 jenkins 脚本控制台上编写 groovy 脚本来获取环境变量的值?
【发布时间】:2019-10-21 16:00:12
【问题描述】:

我为此问题进行了很多搜索,但在任何地方都找不到有效的解决方案。有人可以帮我吗?我想通过 jenkins 脚本控制台获取已经存在的环境变量值。

【问题讨论】:

  • 可以打印所有环境变量,使用-sh 'printenv'

标签: jenkins groovy environment-variables


【解决方案1】:

根据this answer,为了从 Jenkins 脚本控制台访问 env vars,请执行以下操作:

import jenkins.model.*;
import hudson.slaves.EnvironmentVariablesNodeProperty;
import hudson.EnvVars;

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

def myVariable = env['MY_VAR']

http://<JENKINS_URL>/env-vars.html 中列出的环境变量可用于每个构建。为了在 Jenkins 脚本控制台中访问这些变量,您需要首先定义构建:

build = Jenkins.instance.getItemByFullName('JOB_NAME').getBuildByNumber(BUILD_NUMBER)
envvars = build.getEnvironment()
envvars.each{envvar ->
  println envvar
}

【讨论】:

  • 它为所有构建环境变量提供 null。
  • 这为您提供了在每个节点上全局定义的环境变量 (EnvironmentVariablesNodeProperty)。你想要什么环境变量?对于特定构建或特定节点?你想什么时候访问它?在运行构建时或通过脚本控制台运行构建后?
  • 我想获取此处列出的环境变量的值:http:///env-vars.html/ ..并希望通过 jenkins 脚本控制台访问它们(通过编写groovy 脚本)。
  • 我编辑了我的答案。您想要访问的环境变量是为每个构建定义的,因此您需要首先定义构建。将JOB_NAME 替换为您的工作名称,将BUILD_NUMBER 替换为您要访问其环境变量的构建编号。
【解决方案2】:

你需要区分:

如果你看到

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

检查this answer,并首先定义build

import hudson.model.*

def build = Thread.currentThread().executable
def buildNumber = build.number

【讨论】:

  • 我正在使用构建环境变量。在詹金斯脚本控制台中只写这个:def myVar = build.getBuildVariables().get('BUILD_NUMBER') 给出:groovy.lang.MissingPropertyException:否这样的属性:为类构建:Script1。输出。
  • @TarishiJain 好的。我已编辑答案以解决该错误消息。
  • 现在出现这个错误:groovy.lang.MissingPropertyException:没有这样的属性:类的可执行文件:java.lang.Thread ..请帮忙!
  • @TarishiJain 检查stackoverflow.com/a/38130496/6309 是否可以帮助解决第二条错误消息。
猜你喜欢
  • 2017-03-06
  • 1970-01-01
  • 2021-11-30
  • 2020-05-03
  • 1970-01-01
  • 2018-04-16
  • 2020-09-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多