我是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)
^
非常感谢任何帮助
答案 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")}