我需要监控jenkins上的作业发生的变化(更新文件的更改)。需要列出作业的env变量。该构建的JOB_NAME,BUILD_NUMBER,BUILD_STATUS,GIT_URL(作业的所有构建)。我没有找到一个很好的例子与groovy。获取所有信息的最佳方法是什么?
答案 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脚本
// 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脚本返回的环境变量保存在map中。如果您不需要所有这些,则可以使用标准operators/methods访问各个值。
此方法预计您已安装EnvInject Plug-in并可访问$ JENKINS_HOME文件夹:
$ find . ${JENKINS_HOME}/jobs/[path-to-your-job] -name injectedEnvVars.txt
...
PS。我怀疑可以分析EnvInject Plug-in API并找到直接从Java / Groovy代码中提取此信息的方法。
要查找特定变量,您可以使用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.
希望它有所帮助!