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"))
我写了简单的 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"))