Использование переменной на другом этапе в декларативном Jenkinsfile

Я пишу декларативный Jenkinsfile, который выглядит так. На этапе «сборка» я определяю переменную customImage, которую я хотел бы использовать на этапе «Проталкивание».

К сожалению, я не могу заставить это работать.

pipeline {

    agent any

    stages {
        stage("Build") {
            steps {
                script {
                    def commitHash = GIT_COMMIT.take(7)
                    echo "Building Docker image for commit hash: " + commitHash
                    def customImage = docker.build("myimage:${commitHash}")
                }
            }
        }
        stage("Push") {
            steps {
                echo "Pushing Docker image to registry..."
                script {
                    docker.withRegistry(REGISTRY_SERVER, REGISTRY_CREDENTIALS) {
                        $customImage.push()
                    }
                }
            }
        }
    }

}

1
186
1

Ответ:

Решено

Вам просто нужно определить переменную в области видимости, где вы сможете получить к ней доступ позже, т.е.

def customImage
pipeline {
    agent any
    stages {
        stage("Build") {
            steps {
                script {
                    def commitHash = GIT_COMMIT.take(7)
                    echo "Building Docker image for commit hash: " + commitHash
                    customImage = docker.build("myimage:${commitHash}")
                }
            }
        }
        stage("Push") {
            steps {
                echo "Pushing Docker image to registry..."
                script {
                    docker.withRegistry(REGISTRY_SERVER, REGISTRY_CREDENTIALS) {
                        customImage.push()
                    }
                }
            }
        }
    }

}