Jenkins - 有没有办法解析控制台输出和设置环境变量

时间:2016-04-05 07:47:34

标签: jenkins

我对詹金斯来说比较新。我进入了一个场景,我需要读取控制台输出并找到一个特定的字符串并将其设置为环境变量。我将在一些下游工作中使用这个变量。

例如:我的jenkins job的控制台将包含类似

的内容

product_build_number: 123456

我查看过FindText,像插件一样记录解析器,但是他们没有帮助我将这个值设置为环境变量

有人可以帮助找到这个号码并将其传递给下游工作吗?

**

  

更新了答案:

**

def matcher = manager.getLogMatcher(".*product_build_number=(\\d+.*)")
if(matcher.matches()) {
    pbn= matcher.group(1).substring(0)
    manager.build.setDescription(pbn) // you can do anything with this here
}

1 个答案:

答案 0 :(得分:1)

考虑使用Groovy Postbuild Plugin

示例:

  

下面的脚本会发出一个警告标记,如果检测到已弃用的方法被使用,则会将构建标记为不稳定。

if(manager.logContains(".*uses or overrides a deprecated API.*")) {
    manager.addWarningBadge("Thou shalt not use deprecated methods.")
    manager.createSummary("warning.gif").appendText("<h1>You have been warned!</h1>", false, false, false, "red")
    manager.buildUnstable()
}

解决方案

完整的解决方案不仅使用Groovy Postbuild Plugin来解析控制台输出和设置变量BUILD_MSG,还需要Parameterized Trigger Plugin来触发具有预定义参数MSG=${BUILD_MSG}的下游作业。下游作业自动访问MSG参数。

Groovy Postbuild脚本:

import hudson.model.*


matcher = manager.getLogMatcher('^build msg: (.*)$')

if (matcher.matches()) {
    buildMsg=matcher.group(1)

    manager.build.addAction(
        new ParametersAction([
            new StringParameterValue("BUILD_MSG", "${buildMsg}")
        ])
    )
}