我已经设置了一个奴隶。 对于执行shell脚本的作业,我配置为在slave和master上运行。 如果我启动了同一个作业的2个实例,我发现该作业只由主服务器运行,第二个实例等待第一个实例完成,它也将由主服务器运行。
我希望主人和奴隶同时工作。
为什么奴隶总是闲着?
有没有办法优先考虑一个奴隶?
更新:在我的用例中,作业使用数据库进行破坏性测试,因此在节点中拥有同一作业的多个实例的可靠性并不好。每个节点都有一个数据库副本。
答案 0 :(得分:1)
首先,转到作业配置页面并选中“必要时执行并发构建”。这将允许您的作业的多个实例同时执行。
接下来,转到构建节点的配置页面(通过主页面上的“Build Executor Status”链接),并为每个(主要和从属)设置“执行程序的数量”为1。这将阻止一个构建节点同时运行多个作业。
结果应该是,如果你启动同一个作业的2个实例,一个将在主服务器上执行,一个将在从服务器上执行。
答案 1 :(得分:0)
使用jenkins管道脚本的解决方案:
node("master") {
parallel (
"masterbuild" : {
node ("master") {
mybuild()
}
},
"slavebuild" : {
node ("slave") {
mybuild()
}
}
)
}
def mybuild() {
sh 'echo build on `hostname`'
}
答案 2 :(得分:0)
这是对Wim
答案的改进:
转到作业配置页面并选中“必要时执行并发构建”。这将允许您的作业的多个实例同时执行。
接下来,使用Throttle Concurrent Builds Plug-in。
这样,每个节点只允许执行一次,并且负载在不同节点之间平衡。
通过这种方式,节点不会失去同时运行多个不相关的作业的能力。