如何获取当前阶段已从阶段重新启动的构建的ID?

时间:2020-05-12 10:14:41

标签: jenkins jenkins-pipeline jenkins-groovy

我有一个詹金斯管道,它有5个阶段。假设我运行它并且它的构建ID为5,但是在第3阶段失败。

现在,我使用Restart from failed stage功能重新运行版本5,当前版本的ID为7(与此同时有人以ID 6的身份运行)。现在,当前正在运行的ID为7的构建中,我想获取此构建已重新启动的构建的ID(即5)。

有没有可以用来获取当前构建已重启的构建ID的api?

1 个答案:

答案 0 :(得分:0)

您可以通过currentBuild.rawBuild.getCause(RestartDeclarativePipelineCause)获取此信息:

工作管道示例:

pipeline{
    agent any

    stages {
        stage('Stage 1') {
            steps {
                echoRestartedInfo()
            }
        }
        stage('Stage 2') {
            steps {
                echoRestartedInfo()
            }
        }
    }
}

void echoRestartedInfo() {
    def restartCause = currentBuild.rawBuild.getCause(
        org.jenkinsci.plugins.pipeline.modeldefinition.causes.RestartDeclarativePipelineCause )

    if( restartCause ) {
        def originRunNumber = restartCause.originRunNumber
        def originStage     = restartCause.originStage
        echo "Restarted from build $originRunNumber, stage '$originStage'"
    }
    else {
        echo "Normal run"
    }
}

由于使用rawBuild,因此在沙箱中不起作用。将代码移到共享库中以解决此限制。