0

目标

我正在尝试创建多个配置略有不同的 docker 映像,这些将构成进一步下游不同构建的基础。为避免代码重复,我尝试在声明式管道中使用一种方法。

问题

我不知道如何拥有一个stages {}内部有多个的方法。

例子

pipeline{
  agent any


  stages{
    stage('Create Images'){
      parallel {
        stage('Image Foo'){
          environment{
            dockerImage=''
          }
          stages{
            stage("Build image"){
              steps{
                scripted{
                  dockerImage=docker.build(...)
                }
              }
            }
            stage("Configure image"){
              configImage(dockerImage)
            }
            stage('Push to artifactory'){
              steps{
                scripted{
                  dockerImage.push()
                  dockerImage.push("latest")
                }
              }
            }
          }
        }
        stage('Image Bar'){
          environment{
            dockerImage=''
          }
          stages{
            stage("Build image"){
              steps{
                scripted{
                  dockerImage=docker.build(...)
                }
              }
            }
            stage("Configure image"){
              configImage(dockerImage)
            }
            stage('Push to artifactory'){
              steps{
                scripted{
                  dockerImage.push()
                  dockerImage.push("latest")
                }
              }
            }
          }
        }
      }
    }
  }
}

void configImage(dockerImage){
  stages{
    stage("Grab some files"){
      steps{
        echo "I'm getting some files"
      }
    }
    stage("Install some stuff"){
      steps{
        echo "Install all the things"
      }
    }
  }
}
4

0 回答 0