我正在尝试使用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)/
事实证明,问题出在拼写错误,导致正则表达式返回0个匹配项。作为参考,如果其他人需要这样做,则正确的语法为:
从那里您可以提取匹配项,或者像我这样进一步解析匹配项:
def total = summary[0] =~ /\d+ tests/