在具有相同标签的不同节点上并行运行阶段

时间:2021-05-14 13:51:51

标签: jenkins

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

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,“实例上限”为空。

1 个答案:

答案 0 :(得分:1)

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

<块引用>

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

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

enter image description here