Jenkins Groovy在控制台日志上构建插件多行正则表达式

时间:2014-04-17 17:27:52

标签: regex groovy jenkins jenkins-plugins

我试图使用Jenkins中的groovy post build插件创建一个多行正则表达式。我可以在普通的Jenkins脚本控制台中完成这项工作,但我在将其转换为post build插件时遇到了麻烦。

以下是我想从控制台日志中获取的文字:

def string """
 TEST SUMMARY:
 [java]  ------------------------------------------------------------
 [java]       268 tests in 69 groups
 [java]       1 errors
 [java]       0 failures
"""

这行代码将与我在脚本控制台中的内容相匹配:

def match = string =~ /(?ms)(TEST SUMMARY.*?failures)/

我已经使用post build插件尝试了几项内容,包括以下内容:

manager.logContains((?ms)(".*TEST SUMMARY:.*?failures"))

def log = manager.build.logFile
def summary = log =~ /(?ms)(TEST SUMMARY.*?failures)/

def log = manager.build.logFile.text
def summary = log =~ /(?ms)(TEST SUMMARY.*?failures)/

1 个答案:

答案 0 :(得分:3)

事实证明,这个问题是一个错字导致正则表达式返回0匹配。作为参考,如果其他人需要这样做,正确的语法是:

def log = manager.build.logFile.text
def summary = log =~ /(?ms)(TEST SUMMARY.*?failures)/

从那里你可以提取匹配或在我的情况下进一步解析匹配:

def total = summary[0] =~ /\d+ tests/