2

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

4

3 回答 3

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 插件

获取当前构建的环境变量(来自 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 插件

Groovy 脚本返回的环境变量保存在 map 中。如果您不需要所有这些,您可以使用标准操作符/方法访问单个值。

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

这种方法期望您已经安装了EnvInject 插件并且可以访问 $JENKINS_HOME 文件夹:

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

附言。我怀疑有人可以分析EnvInject 插件API 并找到一种直接从 Java/Groovy 代码中提取此信息的方法。

使用EnvInject 插件

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

于 2016-04-18T21:26:38.263 回答
1

build.getEnvironment(listener)应该给你你需要的

于 2016-04-18T20:21:14.573 回答
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.

希望能帮助到你!

于 2016-04-19T03:51:19.657 回答