Jenkins中的Groovy Postbuild,解析日志中的字符串并计算它们

时间:2015-08-18 20:41:27

标签: java string groovy jenkins count

我是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)
   ^

非常感谢任何帮助

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

您的类中直接有语句,而不是在Java / Groovy中不允许的方法中。由于这是Groovy,您可以将其作为没有类的脚本运行,或者将违规代码(if语句)放在方法中并调用方法。

答案 2 :(得分:0)

也许您错过了结束}

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