首页 > 解决方案 > 将变量传递给詹金斯管道中的顺序阶段

问题描述

我有一个 Jenkins 顺序分阶段管道,如下所示。我想将地图(类似于 def return_map = [:])从第一个顺序阶段传递到另一个顺序阶段(1 到 2) 在此处输入图像描述 这是我正在使用的代码。

def stepsToRun = [:]

pipeline {
    agent none

    stages {
        stage ("Prepare Stages"){
            steps {
                script {
                    build_script = load '/home/ubuntu/Documents/build-image.groovy'
                    for (int i = 1; i < 5; i++) {
                        stepsToRun["Step${i}"] = prepareStage("Step${i}")
                    }   
                    parallel stepsToRun
                }
            }
        }
    }
}

def prepareStage(def name) {
    return {
        stage (name) {
            stage("1") {
               def return_map = build_script.image_build_handler(var1,var2,var3)
            }
            stage("2") {
                build_script.push_images(return_map)
            }
        }
    }
}

我想将 return_map 传递给我尝试过的下一个阶段(stage2)。但它没有用。

标签: jenkinsgroovyjenkins-pipeline

解决方案


你可以这样试试:

def prepareStage(def name) {
return {
    stage (name) {
        stage("1") {
           def return_var = build_script.image_build_handler(var1,var2,var3)
           env.return_var = return_var
        }
        stage("2") {
            build_script.push_images(env.return_var)
        }
    }
  }
}

推荐阅读