【问题标题】:Jenkins groovy-postbuild plugin - setBuildNumber() has no effectJenkins groovy-postbuild 插件 - setBuildNumber() 没有效果
【发布时间】:2017-08-15 10:11:30
【问题描述】:

使用一个非常简单的 Jenkinsfile 例如:

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

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

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

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

【问题讨论】:

  • 该问题的答案可能会对您有所帮助stackoverflow.com/questions/19645430/…
  • 我查看了链接中的答案/cmets,但我看不出它们中的任何一个如何帮助我解决我的问题?

标签: jenkins groovy jenkins-plugins


【解决方案1】:

您获得的构建实例是原始构建。每次调用“manager”时,插件都会使用原始构建创建一个新的 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)
}

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2014-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多