如何向Warnings Next Generation Plugin提供一系列将激活解析器的字符串?
我想在共享库中使用一个通用方法,如下所示:
def withWarningNG(def listOfParsers, closure) {
def result
try {
result = closure()
} finally {
recordIssues(tools: listOfParsers)
}
return result
}
// And use it in various Jenkinsfiles thus:
node() {
mySharedLibVar.withWarningNG(['gcc', 'java']) {
... do something ...
}
这将确保即使单元测试未能通过构建,我们也始终尝试运行解析器。我意识到解析器不会在出现编译错误时运行。
我知道我可以通过 Declarative 管道来做到这一点。但是,当尝试这种方法时,我们会使用各种异常行为。随着我们将更多构建逻辑迁移到sharedLibrary声明中,可能会变得更加有用。目前,我想在标准管道中执行此操作。
答案 0 :(得分:0)
我们可以通过以下方式传递字符串并将其作为函数轻松执行
def foo() { return "bar"}
def myFunction="foo"
"${foo}"()
因此,我们可以创建一个像这样的方法来接受分析器列表。
/**
* Run a set of WarningsNextGeneration analyzers
* @param analyzersList list of strings mapping to https://github.com/jenkinsci/warnings-ng-plugin/blob/master/SUPPORTED-FORMATS.md
* @param closure jenkins pipeline code to execute
* @return result of that pipeline code
*/
def withWarningNG(def analyzersList, closure) {
def result
try {
result = closure()
} finally {
for (analyzer in analyzersList) {
println "Configure Recorder for ${analyzer}"
recordIssues(tools: ["${analyzer}"()], enabledForFailure: true)
}
}
return result
}