【问题标题】:Run stage in parallel on different nodes with the same label在具有相同标签的不同节点上并行运行阶段
【发布时间】:2021-07-19 21:39:05
【问题描述】:

我有什么:具有一些并行阶段的工作:

pipeline {
    agent none
    stages {
        stage('Run Tests') {
            parallel {
                stage('Test 1') {
                    agent {
                        label "agent1"
                    }
                    steps {
                        sh "echo 1"
                    }
                }
                stage('Test 2') {
                    agent {
                        label "agent1"
                    }
                    steps {
                        sh "echo 1"
                    }
                }
            }
        }
    }
}

我想在不同的节点上运行并行阶段:如果第一阶段有一个执行器,第二阶段应该在另一个标签为“agent1”的新节点上执行。

我使用标签“agent1”配置了单个节点,两个阶段都在同一个节点上执行。

当我再配置一个节点时,阶段会在不同的节点上执行。我应该如何更改管道以告诉 Jenkins 在单独的节点上运行每个阶段?假设我将再添加两个阶段,并且我想在四个单独的物理节点(在我的例子中为 EC2)上运行它们。

节点配置“执行者数”设置为1,“最小实例数”设置为0,“最小备用实例数”设置为0,“实例上限”为空。

【问题讨论】:

    标签: jenkins


    【解决方案1】:

    假设您使用的是Amazon EC2 Plugin,您可以为每个 AMI 配置一个不错的选项,称为最大总使用次数

    将为从此模板启动的从站设置最大总使用量。在运行了这么多作业之后,slave 将被终止。使用“-1”表示无限次使用。

    这意味着您可以将此值设置为 1 并且插件将在第一个作业之后自动处理代理(或在您的情况下为每个阶段,因为 agent 指令是每个阶段),并且为下一份工作午餐。
    这是一个很好的嵌入式机制,可确保作业(或阶段)在每次执行时始终在新的代理上运行。

    【讨论】:

      猜你喜欢
      • 2020-02-17
      • 2018-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-21
      • 2017-01-06
      • 2020-08-31
      相关资源
      最近更新 更多