在jenkins上查找作业的所有构建的env变量

时间:2016-04-18 18:30:41

标签: jenkins groovy jenkins-scriptler

我需要监控jenkins上的作业发生的变化(更新文件的更改)。需要列出作业的env变量。该构建的JOB_NAME,BUILD_NUMBER,BUILD_STATUS,GIT_URL(作业的所有构建)。我没有找到一个很好的例子与groovy。获取所有信息的最佳方法是什么?

3 个答案:

答案 0 :(得分:1)

build.getEnvironment(listener)应该能满足您的需求

答案 1 :(得分:1)

根据您希望实现的目标,至少有几种方法可以检索和保存环境变量:

  • 当前版本
  • 所有过去的构建

获取当前构建的环境变量(来自从属)

执行Groovy脚本

// Get current environment variables and save as 
// a file in $WORKSPACE.
new File(".",'env.txt').withWriter('utf-8') { writer ->
  System.getenv().each { key, value ->
    writer.writeLine("${key}:${value}")
  }
}

使用Groovy Plug-in

获取当前构建的环境变量(来自master)

执行系统Groovy脚本

// Get current environment variables and save as 
// a file in $WORKSPACE.
import hudson.FilePath


def path = "env-sys.txt" 
def file = null

if (build.workspace.isRemote()) {
   file = new FilePath(build.workspace.channel, build.workspace.toString() + "/" + path)
} else {
   file = new FilePath(build.workspace.toString() + "/" + path)
}

def output = ""
build.getEnvironment(listener).each { key, value ->
  output += "${key}:${value}\n"
}
file.write() << output

使用Groovy Plug-in

Groovy脚本返回的环境变量保存在map中。如果您不需要所有这些,则可以使用标准operators/methods访问各个值。

获取所有过去构建的环境变量(来自master)

此方法预计您已安装EnvInject Plug-in并可访问$ JENKINS_HOME文件夹:

$ find . ${JENKINS_HOME}/jobs/[path-to-your-job] -name injectedEnvVars.txt
...

PS。我怀疑可以分析EnvInject Plug-in API并找到直接从Java / Groovy代码中提取此信息的方法。

使用EnvInject Plug-in

要查找特定变量,您可以使用find, grep and xargs工具。

答案 2 :(得分:0)

您可以使用以下脚本获取Environment Variables

def thread = Thread.currentThread()
def build = thread.executable
// Get build parameters
def buildVariablesMap = build.buildVariables 
// Get all environment variables for the build
 def buildEnvVarsMap = build.envVars
 String jobName = buildEnvVarsMap?.JOB_NAME // This is for JOB Name env variable.

希望它有所帮助!