我为这个问题做了很多谷歌,没有发现任何有助于解决我的问题。
我正在尝试解析Jenkins作业的控制台输出并设置环境变量。我需要在我的父作业中使用此变量,该作业将在不同的奴隶上运行。
我可以使用
从控制台输出中获取我需要的字符串值def build = Thread.currentThread().executable
def matcher = manager.getLogMatcher(".*myEnvironemntValue: (.*)")
if(matcher != null && matcher.matches()) {
log('found my value')
myEnvironemntValue= matcher.group(1).substring(0)
def pa = new ParametersAction([
new StringParameterValue("MY_ENV_VALUE", myEnvironemntValue)
])
build.addAction(pa)
manager.addInfoBadge(myEnvironemntValue)
}
我有一个buildflow工作(父工作),我将使用DSL脚本调用其他子工作,例如
def b1 = build("child_job1", NODE: node)
def b2 = build("child_job2", NODE: node)
子作业child_job1
和child_job2
是多阶段作业,它们会在不同阶段依次调用其他作业,例如phase1_job
,phase2_job
和phase3_job
一旦完成作业phase3_job
,我想从其控制台获取一个特定值。
有人可以帮忙解决这个问题吗?我可以使用其他插件,如果它们帮助我获取控制台值并将其设置为环境变量
答案 0 :(得分:1)
需要注意的一点是Groovy Post构建在master上运行,因此设置环境变量可能不是你想要的。
话虽如此,可能有很多方法可以将这些信息传递给父母。父工作是否等待孩子完成?如果是这样,您可以将环境变量保存为工件并使用Jenkins模型,http甚至文件系统将其下拉(如果父项在主服务器上运行或您通过父Groovy Postbuild访问它)。
这会解决您的问题吗?如果没有,你能详细说明事情是如何设置的,也许可以举个例子吗?