首页 > 解决方案 > 如何从执行重建的位置获取内部版本号?

问题描述

当我从构建页面单击“重建”时,詹金斯会重建并运行一个新作业 - 一个具有新詹金斯内部版本号的新作业。

如何获取执行重建的作业的内部版本号?

我不是在谈论以前的内部版本号。

说我在构建 10。我去构建 5 并单击重建。我如何像我一样从管道内部获取内部版本号(5)env.BUILD_NUMBER

标签: jenkinsjenkins-pluginsjenkins-pipeline

解决方案


我假设您正在使用 Groovy Pipeline 并且已经知道全局变量(请参阅全局变量参考)。

  1. currentBuild变量有一个rawBuild返回hudson.model.Run对象的字段
  2. 调用rawBuildObject#getCauses()orrawBuildObject#getCauses()并返回一些 Cause 对象。

下面的脚本:

node {
    stage('test advance script') {
            echo "current build number: ${currentBuild.number}"
            echo "previous build number: ${currentBuild.previousBuild.getNumber()}"
            def causes = currentBuild.rawBuild.getCauses()
            echo "causes: ${causes}"
            def rebuildCause0 = currentBuild.rawBuild.getCause(com.sonyericsson.rebuild.RebuildCause)
            echo "rebuildCause0: ${rebuildCause0}"
            echo "rebuild up number: ${rebuildCause0.getUpstreamBuild()}"
        }
}

但正如我们在聊天中讨论的那样,Rebuilder 插件的使用CauseAction方式错误。如果它被固定为this,控制台输出应该是:

current build number: 72
previous build number: 71
causes: [hudson.model.Cause$UserIdCause@679c1066, job/DMP/job/test-pipeline/63[hudson.model.Cause$UserIdCause@679c1066]]
rebuildCause0: job/DMP/job/test-pipeline/63[hudson.model.Cause$UserIdCause@679c1066]
rebuild up number: 63

scriptApproval当您看到这样的错误时,请记住:

Scripts not permitted to use method hudson.model.Run getCauses. Administrators can decide whether to approve or reject this signature.


推荐阅读