一尘不染

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

jenkins

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

任何帮助将不胜感激


阅读 724

收藏
2020-07-25

共1个答案

一尘不染

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

2020-07-25