如何使用jenkins控制台的groovy脚本捕获第二个字符串

时间:2015-02-10 19:02:21

标签: groovy jenkins

我需要在jenkins作业上配置rspec测试用例运行计数。 以下是测试运行后jenkin控制台中条目的格式。

3 examples, 0 failures

 6 examples, 0 failures

我们在控制台中有两次这样的条目,如上所示(因为2个ruby脚本运行)。所以在完成所有运行之后,当构建完成时,我需要捕获在jenkins的Build History中显示的作业的条目和显示。

因此,为了捕获上面的计数,我正在使用jovkin配置的groovy Postbuild下面的groovy脚本。但它只选择jenkins控制台中字符串的第一个匹配项:

    matcher = manager.getLogMatcher("(.*) examples, (.*) failures")
if(matcher != null && matcher.matches()) {
    totalTests = matcher.group(1)
    failedTests = matcher.group(2)
    description += "<br/>UI Tests: total: ${totalTests}, Fail: ${failedTests}"
}

如何从jenkins控制台获得第2,第3场比赛:

1 个答案:

答案 0 :(得分:0)

您也可以尝试使用build.getLog(int maximumLines),然后使用regex解析输出。例如:

def buildLog = manager.build.getLog(10) // you might need to change the amount of maximum lines
def group = (buildLog =~ /(\d+) examples, (\d+) failures/ )
for(int i=0; i<group.size();i++) {
    manager.createSummary("info.gif").appendText("examples: ${group[i][1]}, failures: ${group[i][2]}", false)
}

在这种情况下,结果将添加到每个构建信息中。