2013-08-20 236 views
3

如何将Jenkins中的参数从构建步骤传递到构建后步骤? 我不想通过文件来完成它,因为它只是一个简单的字符串(版本号),我想通过。将构建步骤中的参数传递给Jenkins中的构建后步骤

在后期构建中,我使用Groovy postbuild插件将此字符串添加到构建摘要中。


更新: 我绝望了)),并决定通过文件的路线走。 无法弄清楚如何在Groovy后期构建步骤中获取WORKSPACE env var以从中获取文件。

最终更新: 所以我最终解析了构建日志,请参阅我自己的答案。

回答

2

我结束了打印信息生成日志在构建步,然后在后集结 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() 
} 
+0

感谢您分享您的解决方案。 EnvInject插件不适用于我的用例,其中我需要在构建失败时导出环境变量。当构建失败时,EnvInject构建步骤完全不会被调用 - 可能是一个bug。我正在使用您的解决方案在PostBuild Groovy步骤中导出环境变量。这个环境变量然后被另一个构建后步骤(email-ext插件)拾取。拯救生命的人:) – noumenon

0

也许使用envinject plugin

+0

应该这样做通过一个文件 –

+0

谢谢,coffeebreaks!我试过了。首先,它看起来很有希望 - 增加一个类型为“Inject environment varialbes”的构建步骤,该步骤声明它将“将环境变量注入到下面的构建步骤和构建后的操作”。然后我无法弄清楚如何在构建后的Groovy步骤中获得env var ...谢谢,无论如何! – Ivan