在 Jenkins 的声明式管道的不同阶段重用对象/属性

lvt*_*llo 5 groovy artifactory maven jenkins jenkins-pipeline

我们创建一个新的 maven 构建:

def rtMaven = Artifactory.newMavenBuild()
Run Code Online (Sandbox Code Playgroud)

现在我们想在与当前阶段不同的阶段重用这个 rtMaven;就像下面的代码:

pipeline {
agent any

...
stages {

    stage('stage1') {
        steps {
            script {
                def rtMaven = Artifactory.newMavenBuild()
            }
    }

    stage('stage2') {
         steps {
            script {
                //REUSE rtMaven (now it's unknown)
            }
         }

     }
}
Run Code Online (Sandbox Code Playgroud)

是否可以重用rtMaven而无需在第二阶段再次重新定义它?

现在我们有一个错误,如:

groovy.lang.MissingPropertyException: No such property: rtMaven for class: groovy.lang.Binding
Run Code Online (Sandbox Code Playgroud)

Ram*_*ath 5

在全局范围内定义 var

def rtMaven = ''
pipeline {
    agent any
    stages {
        stage('stage1') {
            steps {
                script {
                    rtMaven = Artifactory.newMavenBuild()
                }
            }
        }
    stage('stage2') {
        steps {
            script {
                echo "$rtMaven"
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)