Jenkins groovy-postbuild插件 - setBuildNumber()无效

时间:2017-03-23 02:27:50

标签: jenkins groovy jenkins-plugins

使用非常简单的Jenkins文件,例如:

echo "Current build number: ${manager.build.number}"
if (manager.setBuildNumber(1)) {
    echo "Build number is now: ${manager.build.number}"
    manager.createSummary("gear2.gif").appendText("<h2>Testing</h2>", false)
}

输出结果为:

[Pipeline] echo
Current build number: 3
[Pipeline] echo
Build number is now: 3
[Pipeline] End of Pipeline

我希望第二个echo是build number 1.这意味着manager.createSummary()将应用于当前的内部版本号(3),而不是预期的一个(1)。

有什么想法吗?我查看了groovy-postbuild源代码,看起来它实际上是从build.getParent().getBuildByNumber(buildNumber)获取构建,因为它返回一个非空值,但是它返回的构建可能是当前构建的提供了什么版本号?

FWIW,我们正在使用GitHub组织和多分支插件。

1 个答案:

答案 0 :(得分:0)

您获得的构建实例是原始构建。每次调用&#34; manager&#34;时,插件都会使用原始版本创建一个新的BadgeManager实例。

为了在其他版本(在您的情况下为1)上执行if块操作,您应该使用相同的管理器实例。例如:

echo "Current build number: ${manager.build.number}"
def mng = manager
if (mng.setBuildNumber(1)) {
    echo "Build number is now: ${mng.build.number}"
    mng.createSummary("gear2.gif").appendText("<h2>Testing</h2>", false)
}