如何在同一标签下的不同从站上并行执行不同请求的作业

时间:2013-09-16 03:29:57

标签: jenkins

简而言之

如何将一个作业请求分发给只有一个从属并执行;如果有其他从属设备闲置,则跟随作业请求将不会排队

详情

有一项服务使用Jenkins作业作为条目,用户可以通过单击Build Job提交请求。有一次,只能在一个奴隶上执行一项工作。

为了提高吞吐量,我添加了更多的从属来执行此作业。但是,我发现了以下问题:

  1. 使用多配置作业,在所有从站上生成相同的作业,但我只希望一个从站执行作业(一个请求),因此其他从站可以执行其他工作(要求)。

  2. 使用 NodeLable插件,但是当一个作业正在执行时,即使有其他从属设备闲置,下面的作业也会排队。

  3. 因为输入作业将触发下游作业,所以从属服务请求不会改变,在完成所有上一个下游作业之前,可以在同一个从属设备上触发另一个输入作业。

    有没有办法让入境工作选择一个随机的奴隶来执行工作,满足一个用户的要求;然后选择另一个奴隶(如果有空闲)来执行另一个工作,满足另一个用户的请求。如果所有从站都忙,则即将到来的请求将排队并等待从站再次空闲。

    谢谢!

    我选择了什么

    当不同的工作相互依赖并具有共享状态时,就会出现问题。因此,为了避免将来受挫,我将所有依赖的作业合并为一个。所以没有更多的共享状态,问题就消失了。

3 个答案:

答案 0 :(得分:1)

@Xin Huang - 添加条目" slave1 || SLAVE2"在"限制该项目可以运行的地方"部分。 这将确保您的工作在所提到的任何奴隶上运行。

答案 1 :(得分:0)

Multi configuration作为Jenkins的标准配置,允许您使用不同的配置(例如,不同的标签)运行相同的作业。您可以通过创建新作业并选择“构建多配置项目”选项来实现此目的

或者,有一个build pipeline作业,允许您并行运行作业阶段

这两种解决方案都受可用执行程序数量的约束

答案 2 :(得分:0)

Parameterized Trigger Plugin允许一个作业触发另一个作业,并强制它在与自己运行相同的从站上执行。