我正在尝试使用 Jenkins 中的 groovy 后期构建插件创建多行正则表达式。我可以在普通的 Jenkins 脚本控制台中完成这项工作,但我在将其转换为后期构建插件时遇到了麻烦。
这是我想从控制台日志中获取的文本:
def string """
TEST SUMMARY:
[java] ------------------------------------------------------------
[java] 268 tests in 69 groups
[java] 1 errors
[java] 0 failures
"""
这行代码将与我在脚本控制台中的上面的代码相匹配:
def match = string =~ /(?ms)(TEST SUMMARY.*?failures)/
我已经使用后期构建插件尝试了一些方法,包括以下内容:
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 log = manager.build.logFile.text
def summary = log =~ /(?ms)(TEST SUMMARY.*?failures)/
从那里您可以提取匹配项,或者像我一样进一步解析匹配项:
def total = summary[0] =~ /\d+ tests/
关于regex - Jenkins Groovy 控制台日志上的构建后插件多行正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23139654/