Groovy Postbuild 不在 Jenkins 上执行脚本

Groovy Postbuild do not execute scripts on Jenkins

我写了简单的 groovy 脚本,但我不知道如何在 Jenkins 上执行它。

看看这个简单的脚本:

String jbN = System.getenv('JOB_NAME')
println  jbN
println "Hello"

除此之外我至少会收到 "Hello"。脚本没有给出 return。我刚收到 Build step 'Groovy Postbuild' marked build as failure(or success)

好像没有执行脚本。

编辑:

我没有添加它,但我已经有了分析日志的脚本,所以我需要它来执行它 post-build。 问题比我想象的要大。插件:"Scriptler" 或 "Groovy Plugin" 不打印任何内容。 我要打印的脚本:

String jbN = System.getenv('JOB_NAME')
println  jbN

在您的情况下,您想使用 Groovy plugin rather than the Groovy Postbuild plugin

Groovy Postbuild 插件用于更改构建结果(postbuild)。 Groovy 插件用于 运行 简单 Groovy 脚本 你的工作中。

点击Manage Jenkins-->Script Console

我找到了解决方案:

脚本已执行但未打印到控制台输出。 要将结果打印到控制台输出,您需要编写: manager.listener.logger.println("Some string") 而不是 println.

要使其更短,请执行以下操作:

logger = manager.listener.logger.&println // and call like this: logger("test log message")

编辑:添加记录器示例并描述如何获取环境变量(以及如何不获取它们)并希望为人们节省一些调试时间。 . .这是简单但笨拙的东西。

要获取工作区,您可以通过管理器对象。像这样:

manager.build.workspace

要获取环境变量,这个不起作用:

String jbN = System.getenv('JOB_NAME')

显示jbN为空。 这是有道理的,因为 JOB_NAME 不是实际的系统环境变量。

这也无法获取环境变量,抛出异常:

${manager.envVars['WORKSPACE']}

这确实有助于获得 jenkins 工作 "env vars",如 WORKSPACE,JOB_NAME,BUILD_NAME:

def build = Thread.currentThread().executable workspace = build.getEnvVars()["WORKSPACE"]

使用示例,您可以在工作区中调用一个 groovy 脚本,如下所示:

evaluate(new File(manager.build.workspace.toString() + "/dirinworkspace/scriptname.groovy"))