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