0

我已经设置了一个奴隶。对于执行 shell 脚本的作业,我配置为在从属服务器和主服务器上运行。如果我启动同一个作业的 2 个实例,我观察到该作业仅由 master 运行,第二个实例等待第一个实例完成,它也将由 master 运行。

我希望主人和奴隶同时工作。

为什么奴隶总是闲着?

有没有办法优先考虑一个奴隶?

更新:在我的用例中,一项作业使用数据库进行破坏性测试,因此在一个节点中拥有多个相同作业的实例对可靠性不利。每个节点都有一个数据库副本。

4

3 回答 3

1

首先,进入作业配置页面,勾选“Execute concurrent builds if necessary”。这将允许您的作业的多个实例同时执行。

接下来,转到构建节点的配置页面(通过主页上的“构建执行器状态”链接)并将每个执行器的“# of executors”设置为 1(主节点和从节点)。这将防止一个构建节点同时运行多个作业。

结果应该是,如果您启动同一作业的 2 个实例,一个将在主服务器上执行,一个将在从服务器上执行。

于 2017-05-29T14:19:52.000 回答
0

使用詹金斯管道脚本的解决方案:

node("master") {
    parallel (
        "masterbuild" : { 
            node ("master") {
                mybuild()
            }
        },
        "slavebuild" : { 
            node ("slave") {
                mybuild() 
            }
        }
    )
}
def mybuild() {
    sh 'echo build on `hostname`'
}
于 2017-05-29T14:39:00.753 回答
0

这是对Wim答案的改进:

转到作业配置页面并选中“如有必要,执行并发构建”。这将允许您的作业的多个实例同时执行。

接下来,使用Throttle Concurrent Builds Plug-in

这样每个节点只允许执行一次,不同节点之间的负载均衡。

这样,一个节点就不会失去同时运行多个不相关作业的能力。

于 2017-06-01T09:38:42.977 回答