【问题标题】:Jenkins:How to Achieve parallel dynamic stages in jenkins declarative pipelineJenkins:如何在詹金斯声明式管道中实现并行动态阶段
【发布时间】:2019-12-10 06:41:07
【问题描述】:

我正在开发声明式管道。我正在尝试实现动态阶段,该阶段应该与定义的代理并行分布阶段。当我探索时,我学会了如何实现动态顺序阶段。下面是我的示例代码。

我现在的问题是,如何与我拥有的代理实现并行阶段。例如,如果我有 3 个代理,那么所有 5 个阶段都应该在代理中并行运行。我尝试使用并行测试但不工作。请帮助我进一步改进!

def learn
pipeline {
    agent none

    stages {
        stage('Dynamic Stages') {
          steps {
                script {
                    learn = ["1", "2", "3", "4", "5"]
                    for(int i=0; i < list.size(); i++) {

                        stage(list[i]){
                            echo "value: $i"
                        }
                    }
                }
            }

        }
    }
}

【问题讨论】:

  • 不是很清楚你想要得到什么,你能试着更具体一点吗?你得到什么行为,你期望什么行为?
  • 我的确切要求是:我想实现一个并行阶段,该阶段必须根据可用的代理列表运行阶段。例如,如果我有 3 个代理在线,我的测试希望分发到可用的 3 个代理。如果您还需要更多详细信息,请告诉我。谢谢
  • 这绝对是这个 SO 帖子的欺骗:stackoverflow.com/questions/46894308/… 该链接有更多的细节和信息。

标签: jenkins jenkins-pipeline jenkins-plugins jenkins-groovy jenkins-cli


【解决方案1】:

以下应并行运行所有阶段。 Jenkins 将使用任何可用的节点。

def learn
pipeline {
    agent none

    stages {
        stage('Dynamic Stages') {
          steps {
                script {
                    learn = ["1", "2", "3", "4", "5"]
                    def builders = [:]
                    for(i in learn) {
                        def value = i // Need to bind the label variable before the closure - can't do 'for (i in learn)
                        builders[i] = {
                            node {
                                echo "value: $i"
                            }
                        }
                    }
                    parallel builders
                }
            }
        }
    }
}

【讨论】:

  • 嗨,克里斯,感谢您的建议代码 sn-p。我在这里澄清一下。我相信 Builders 数组获取节点详细信息,并行构建器运行并行测试。在此处定义代理详细信息的位置。例如 Builder[0] 应该在节点/代理“机器 1”中运行
  • 在这种情况下,您可以像这样为您的节点指定标签:node(label)
  • 够酷!,我得到了我想要实现的目标。将标记为已回答。我可以知道詹金斯方面是否有针对这种情况的任何文档
  • 我不记得我在哪里找到的,我从不同的来源将它拼凑在一起......我们在这里使用了类似的构造......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
  • 2022-10-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多