在单独的容器中平行动态阶段

发布于 2025-02-10 23:41:25 字数 756 浏览 0 评论 0原文

我有此管道根据文件内容生成动态阶段。我希望阶段在不同的容器上运行,因此我想将Agent {Docker {image''}}}标签移至GenerateStage()函数的舞台内部,但由于它是脚本的管道,因此是不可能的。如何在单独的容器上运行这些阶段,并且仍将它们运行并动态生成它们? 非常感谢您的帮助。 谢谢!

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
          }
      }
}

I have this pipeline that generates dynamic stages based on file content. I want the stages to run on different containers, so I thought to move the agent{docker{image ''}}} label to inside the stage in the generateStage() function but it's not possible since it's a scripted pipeline. How can I run these stages on separate containers, and still run them parallelly and generate them dynamically?
Would really appreciate your help.
Thanks!

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
          }
      }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

ゞ记忆︶ㄣ 2025-02-17 23:41:25

您可以执行以下操作,而不是使用代理选项。

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

Instead of using the agent option, you can do something like the below.

def generateStage(job) {
    return {
        stage("stage: job") {
           docker.image('your-image').inside {
              sh 'DO SOMETHING'
            }
        }
    }
} 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文