当前位置: 首页 > 面试题库 >

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

程吕恭
2023-03-14
问题内容

我正在尝试使用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 log = manager.build.logFile.text
def summary = log =~ /(?ms)(TEST SUMMARY.*?failures)/

从那里您可以提取匹配项,或者像我这样进一步解析匹配项:

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


 类似资料:
  • 问题内容: 我正在寻找一种解析日志文件的解决方案。看起来像: 可以区分以下元素: 但我仍然不知道该怎么做。简单行不通。 我知道正则表达式具有一般规则,但最合适的是Java。 谢谢 问题答案: 我想出了一种根据可能的/期望的值从与各个字段匹配的块中构建正则表达式的方法。 当然,可以用rex代替rexa或rexi。

  • 在开发一个简单的插件时,我有如下代码: 是否有一种方法可以配置我的项目以允许使用此日志类的信息级输出?

  • 嘿,我想知道控制台中的输出是否可能与文件输出中的输出相同。 这是我的XML配置。 滚动文件中的输出 在控制台中为空。但是现在如果我改变 到"追踪" 将是2,4,6。。。。在控制台和我的文件中,它将是1,3,5,7。。。这很容易理解。 但是我的问题是,我们如何在控制台和文件中同时拥有相同的日志级(跟踪)输出?(添加包名称和级别的标签不起作用) 与此问题相关: log4j2 xml配置-登录到文件和控

  • 问题内容: 我写了一个正则表达式来从HTML提取字符串,但是多行标志似乎不起作用。 这是我的模式,我想在标签中获取文本。 我创建了一个字符串来测试它。当字符串包含“ \ n”时,结果始终为null。如果删除所有的“ \ n”,无论有没有标志,它都会给我正确的结果。 我的正则表达式怎么了? 问题答案: 您正在寻找修饰符,也称为 dotall 修饰符。它将强制点也匹配换行符,默认情况下 不这样做 。

  • 问题内容: 我对多行字符串的replaceAll有问题: 以上适用于testWorks,但不适用于testIllegal !?为什么会这样,我该如何克服呢?我需要替换跨越多行的注释/ * … * /。 问题答案: 您需要使用标志来表示点应与换行符匹配。例如 或者使用例如在模式中指定标志