简而言之
如何使一个作业请求只分发给一个slave并执行;而如果有其他从属空闲,则后续作业请求将不会排队。
细节
有一个使用 Jenkins 作业作为入口的服务,用户可以点击 提交请求Build Job
。一次只能在一个从站上执行一项作业。
为了提高吞吐量,我添加了更多的 slave 来执行这个作业。但是,我发现了以下问题:
使用多配置作业,在所有从属服务器上产生相同的作业,但我只希望一个从属执行作业(一个请求),因此其他从属可以执行其他作业(请求)。
使用NodeLable 插件,但是当一个作业正在执行时,即使有其他从属空闲,后续作业也会排队。
因为入口作业会触发下游作业,所以服务请求的slave不会改变,在之前的所有下游作业完成之前,可以在同一个slave上触发另一个入口作业。
有什么办法让入口作业选择一个随机从属来执行作业,满足一个用户的请求;然后选择另一个从属设备(如果有空闲)来执行另一个作业,以满足另一个用户的请求。如果所有从站都忙,则即将到来的请求将排队等待,直到从站再次空闲。
谢谢!
我选择了什么
当不同的作业相互依赖并具有共享状态时,就会出现问题。因此,为了避免未来的挫败感,我将所有相关的工作合并为一个。所以没有更多的共享状态,问题就消失了。