我有什么:具有一些并行阶段的工作:
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,“实例上限”为空。
答案 0 :(得分:1)
假设您使用的是 Amazon EC2 Plugin,您可以为每个 AMI 配置一个不错的选项,称为最大总使用量:
<块引用>将为从此模板启动的奴隶设置最大总使用量。在运行了这么多作业后,从站将被终止。使用“-1”无限次使用。
这意味着您可以将此值设置为 1 并且插件将在第一个作业(或在您的情况下为阶段,因为 agent
指令是每个阶段)后自动处置代理,然后为下一份工作吃一份新的午餐。
这是一种出色的嵌入式机制,可确保每次执行作业(或阶段)始终在新的新代理上运行。