Groovy Postbuild不在Jenkins上执行脚本

问题描述 投票:6回答:3

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

看这个简单的脚本:

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

除了我将至少接收“ Hello”之外,我会。脚本不予回报。我刚收到Build step 'Groovy Postbuild' marked build as failure(or success)

似乎脚本未执行。

编辑:

我没有添加它,但是我已经有脚本可以分析日志,因此我需要它来在构建后执行它。问题比我想的要大。插件:“脚本编辑器”或“ Groovy插件”不打印任何内容。我正在尝试打印的脚本:

String jbN = System.getenv('JOB_NAME')
println  jbN
groovy jenkins jenkins-plugins
3个回答
14
投票

我找到了解决方案:

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

使其更简短:

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

编辑:在记录器示例中添加并描述如何获取env var(以及如何获取它们),并希望为人们节省一些调试时间。 。 。这很简单但是很尴尬。

要获得工作空间,您可以浏览manager对象。像这样:

manager.build.workspace

要获取环境变量,此不起作用

String jbN = System.getenv('JOB_NAME')

它显示jbN为空。这很有意义,因为JOB_NAME不是实际的系统环境变量。

这也不起作用以获得环境变量,抛出异常:

${manager.envVars['WORKSPACE']}

这确实可以使詹金斯的工作“ 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"))


0
投票

根据您的情况,您想使用Groovy plugin而不是Groovy Postbuild plugin

Groovy Postbuild插件用于更改构建结果(post build)。Groovy插件用于运行简单的Groovy脚本inside您的工作。


-1
投票

单击Manage Jenkins-> Script Console

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9xc3o2ZC5wbmcifQ==” alt =“在此处输入图像描述”>

© www.soinside.com 2019 - 2024. All rights reserved.