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

Jenkins中的Groovy Postbuild,解析日志中的字符串并对其进行计数

朱风史
2023-03-14
问题内容

我是Groovy的新手,正在尝试在Jenkins中建立一个postbuild,它使我可以对字符串进行计数,并确定在最后返回多少计数后,构建是否成功。

这是我的示例代码:

class Main {

  def manager = binding.getVariable("manager")
  def log = manager.build.logFile.text
  def list = log
  def JobCount = list.count {it.startsWith("====") && it.contains("COMPLETE")}
  if (JobCount == 7) {
      manager.listener.logger.println("All Jobs Completed Successfully")
  } else {
      manager.addWarningBadge("Not All Jobs Have Completed Successfully")
      manager.buildUnstable()  
  }
}

我正在寻找当测试成功完成时打印到控制台的特定字符串。字符串是“ ==== JOB COMPLETE
====”,如果所有7个测试都正确通过,则我应该有该字符串的7个实例。

当前,当我运行此代码时,出现以下错误:

Script1.groovy: 6: unexpected token: if @ line 6, column 5.
   if (JobCount == 7)
   ^

任何帮助将不胜感激


问题答案:

manager.build.logFile.text 返回整个文件文本为String。

您需要的是readLines()

def list = manager.build.logFile.readLines()
def JobCount = list.count {it.startsWith("====") && it.contains("COMPLETE")}

并且当然如下所述,Jenkins Groovy Postbuild插件运行Groovy脚本,因此您将摆脱封闭的类声明(Main



 类似资料:
  • 问题内容: 我正在使用Jenkins日志解析器插件来提取并显示构建日志。规则文件如下所示: 一切正常,但由于某些原因,在“解析的输出控制台”的末尾,我看到此消息, 我敢肯定,这是一个小问题,但目前无法解决。请帮忙 :) 编辑: 基于Kobi的答案,并查看了“解析规则文件”,我以这种方式(在冒号后的单个空格)对其进行了修复。这完全按预期工作。 问题答案: 该日志分析器插件不支持您的模式空间。 在其源

  • 问题内容: 在Java中执行以下操作的最佳方法是什么。我有两个输入字符串 我需要从字符串中提取类型和数字。 在这种情况下,答案是type =“ a good”和number =“ 234” 谢谢 问题答案: 您可以使用正则表达式:

  • 我有一个输入表单,允许某人键入unicode字符。所以它可能是类似于“嘿,uF32A怎么了?如果我得到这个字符串,它将有一个子字符串“\uF32A”,我如何将其转换为字符“\uF32A”?

  • 问题内容: 我很难解析/格式化从Web服务接收回的Date字符串。我尝试了多种方法,但是没有运气。 样本日期字符串: 例外: 样例代码: 我发现,如果删除日期和时间之间的“ T”并将其替换为空格,则格式正确。有人有什么建议吗? -更新- 在深入研究API文档之后,我发现了这一点: 所有响应DateTime值均采用UTC格式。 您需要应用UTC偏移量来计算本地显示时间。 DateTime是以下列格式

  • 我试图遍历每个数字索引,并过滤所述索引中excepted_words的任何实例。这个程序的输出似乎几乎没有修改,如果有的话。我该怎么解决这个问题? 输出:

  • 问题内容: 我正在尝试使用JDK java.net.URI构建URI 。 我想附加一个绝对URI对象,一个查询(在String中)。例如: 理论(或我的想法)是决心应该返回: 但是我得到的是: 为什么#resolve() “吃掉”最后一条路?如果新的URI()构建为: 效果很好。 问题答案: 我想回应一下自己。Javadoc确实可以正确解释。如URI#resolve()所述,在第3.b节中: 否则