Groovy 在 Jenkins 中进行后期构建,解析日志中的字符串并对它们进行计数
Groovy Postbuild in Jenkins, parsing the log for strings and counting them
我是 Groovy 的新手,我正在尝试在 Jenkins 中设置一个后期构建,它允许我对字符串进行计数,并根据最后的计数 returns 来确定构建是否成功。
这是我的示例代码:
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)
^
如有任何帮助,我们将不胜感激
也许你错过了结束语}
def JobCount = list.count {it.startsWith("====") && it.contains("COMPLETE")}
manager.build.logFile.text
returns 整个文件文本为字符串。
你需要的是readLines()
:
def list = manager.build.logFile.readLines()
def JobCount = list.count {it.startsWith("====") && it.contains("COMPLETE")}
当然如下所述,Jenkins Groovy Postbuild 插件运行 Groovy 脚本,因此您将摆脱封闭的 class 声明(Main
)
您的 class 中直接有语句,而没有在方法中,这在 Java/Groovy 中是不允许的。由于这是 Groovy,您可以将其 运行 作为完全没有 class 的脚本,或者将有问题的代码(if
语句)放入方法中并调用方法。
我是 Groovy 的新手,我正在尝试在 Jenkins 中设置一个后期构建,它允许我对字符串进行计数,并根据最后的计数 returns 来确定构建是否成功。
这是我的示例代码:
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)
^
如有任何帮助,我们将不胜感激
也许你错过了结束语}
def JobCount = list.count {it.startsWith("====") && it.contains("COMPLETE")}
manager.build.logFile.text
returns 整个文件文本为字符串。
你需要的是readLines()
:
def list = manager.build.logFile.readLines()
def JobCount = list.count {it.startsWith("====") && it.contains("COMPLETE")}
当然如下所述,Jenkins Groovy Postbuild 插件运行 Groovy 脚本,因此您将摆脱封闭的 class 声明(Main
)
您的 class 中直接有语句,而没有在方法中,这在 Java/Groovy 中是不允许的。由于这是 Groovy,您可以将其 运行 作为完全没有 class 的脚本,或者将有问题的代码(if
语句)放入方法中并调用方法。