2

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

我正在尝试解析 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_jobphase3_job

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


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

4

1 回答 1

1

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

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

这会解决你的问题吗?如果没有,您能否详细说明一下事情是如何设置的,或者给我们一个例子?

于 2016-07-21T03:53:41.737 回答