如何将Jenkins中的参数从构建步骤传递到构建后步骤? 我不想通过文件来完成它,因为它只是一个简单的字符串(版本号),我想通过。将构建步骤中的参数传递给Jenkins中的构建后步骤
在后期构建中,我使用Groovy postbuild插件将此字符串添加到构建摘要中。
更新: 我绝望了)),并决定通过文件的路线走。 无法弄清楚如何在Groovy后期构建步骤中获取WORKSPACE env var以从中获取文件。
最终更新: 所以我最终解析了构建日志,请参阅我自己的答案。
如何将Jenkins中的参数从构建步骤传递到构建后步骤? 我不想通过文件来完成它,因为它只是一个简单的字符串(版本号),我想通过。将构建步骤中的参数传递给Jenkins中的构建后步骤
在后期构建中,我使用Groovy postbuild插件将此字符串添加到构建摘要中。
更新: 我绝望了)),并决定通过文件的路线走。 无法弄清楚如何在Groovy后期构建步骤中获取WORKSPACE env var以从中获取文件。
最终更新: 所以我最终解析了构建日志,请参阅我自己的答案。
我结束了打印信息生成日志在构建步,然后在后集结 Groovy插件解析它。
有点难看的解决方法,我知道,有时候我很怀念的TeamCity与它的简单...以下
正则表达式模式显然是具体到我自己的构建......
def matcher = manager.getLogMatcher("^Build Found: [\\w\\s-]+_(\\d+\\.\\d+\\.\\d+)_\\d{8}(\\.\\d+)?\$")
if (matcher?.matches()) {
def Version = matcher.group(1)
manager.addShortText(Version, "grey", "white", "0px", "white")
manager.createSummary("fingerprint.gif").appendText("Version: " + Version, false)
} else {
manager.listener.logger.println("ERROR: Version number is not found in the build log")
manager.buildFailure()
}
也许使用envinject plugin?
应该这样做通过一个文件 –
谢谢,coffeebreaks!我试过了。首先,它看起来很有希望 - 增加一个类型为“Inject environment varialbes”的构建步骤,该步骤声明它将“将环境变量注入到下面的构建步骤和构建后的操作”。然后我无法弄清楚如何在构建后的Groovy步骤中获得env var ...谢谢,无论如何! – Ivan
感谢您分享您的解决方案。 EnvInject插件不适用于我的用例,其中我需要在构建失败时导出环境变量。当构建失败时,EnvInject构建步骤完全不会被调用 - 可能是一个bug。我正在使用您的解决方案在PostBuild Groovy步骤中导出环境变量。这个环境变量然后被另一个构建后步骤(email-ext插件)拾取。拯救生命的人:) – noumenon