Jenkins - 如何使用Groovy Postbuild插件设置环境变量

时间:2016-07-20 11:22:42

标签: jenkins groovy jenkins-build-flow

我为这个问题做了很多谷歌,没有发现任何有助于解决我的问题。

我正在尝试解析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_job1child_job2是多阶段作业,它们会在不同阶段依次调用其他作业,例如phase1_jobphase2_jobphase3_job

一旦完成作业phase3_job,我想从其控制台获取一个特定值。

有人可以帮忙解决这个问题吗?我可以使用其他插件,如果它们帮助我获取控制台值并将其设置为环境变量

1 个答案:

答案 0 :(得分:1)

需要注意的一点是Groovy Post构建在master上运行,因此设置环境变量可能不是你想要的。

话虽如此,可能有很多方法可以将这些信息传递给父母。父工作是否等待孩子完成?如果是这样,您可以将环境变量保存为工件并使用Jenkins模型,http甚至文件系统将其下拉(如果父项在主服务器上运行或您通过父Groovy Postbuild访问它)。

这会解决您的问题吗?如果没有,你能详细说明事情是如何设置的,也许可以举个例子吗?