groovy 在单独的container中并行动态阶段

4dbbbstv  于 2022-11-01  发布在  其他
关注(0)|答案(1)|浏览(146)

我有一个基于文件内容生成动态stage的管道。我希望stage在不同的容器上运行,所以我想将agent{docker{image ''}}}标签移到generateStage中的stage内部()函数,但这是不可能的,因为它是一个脚本化的管道。如何在单独的容器上运行这些阶段,并且仍然并行运行它们并动态地生成它们?非常感谢您的帮助。谢谢!

def generateStage(job) {
    return {
        stage("stage: job") {
            //do something
        }
    }
} 

pipeline{
  agent none
  stages{
    .
    .
    .
    stage('parallel stages') {
      agent { 
        docker{
          image 'some-image:tag'
        }
      }
      steps {
          script {
            def list = ["STAGE-A", "STAGE-B"....] // DYNAMIC LIST CREATED FROM A FILE
            parallelStages = list.collectEntries{
              ["$it": generateStage(it)]        
            }
            parallel parallelStages
          }
      }
}
kmbjn2e3

kmbjn2e31#

除了使用代理选项,您还可以执行以下操作。

def generateStage(job) {
    return {
        stage("stage: job") {
           docker.image('your-image').inside {
              sh 'DO SOMETHING'
            }
        }
    }
}

相关问题