Jenkins中有多个构建队列

时间:2012-01-04 17:43:25

标签: jenkins

我在Jenkins有很多不同的工作,用自己的构建/测试/分析“管道”划分成项目。大多数这些作业实际上是远程命令而不是机上构建。

但是,Jenkins开箱即用只支持所有版本的一个队列。我想为每个项目(或视图)定义一个队列。

我将如何做到这一点?

6 个答案:

答案 0 :(得分:4)

据我所知,如果不改变Jenkins代码是不可能的,但我认为你可以使用build slaves.以最少的维护实现相同的目标。不同的构建可以在从属服务器上同时运行,甚至可以在同一个服务器上运行slave,如果你定义了多个执行器(如果从机有> 1 CPU)。您可以标记从站以控制在每个作业上执行哪些作业,因此您可以为每个管道分别设置一组从站。

除了确保基本从属计算机保持运行的开销之外,运行从属服务器的Jenkins特定开销很小。您可以在主服务器上使用进程来保持从属JAR文件和您需要更新的构建工具;在我的商店,我们使用一个简单的rsync脚本,每次重新启动主站或从站时都会运行该脚本,以便将最新的工具从主站复制到从站并重新启动从站进程。

这种方法也降低了詹金斯大师单点故障的程度。

答案 1 :(得分:0)

您想要的只能通过为每个项目运行单独的Jenkins主机来完成。

通常人们认为Jenkins主机具有比从机更多的管理开销,但如果这不适合您,您可以在服务器上运行多个主机,只需为它们分配不同的端口即可。

如果这对你不利,那么Jenkins可能不适合你。它不是唯一的CI服务器。 Jenkins很容易设置,但另一方面,不可能进行深度自定义,例如多个构建队列。

答案 2 :(得分:0)

我知道这个帖子已经老了,但我想我还是会发表评论。

IMO

我会使用一个Master和多个slave。但是通过配置管理工具或CMT(Chef,Puppet,Ansible等)管理工具配置要求我会通过标签锁定特定构建从属的管道(windows,linux,Mac,visualstudio,maven, android-sdk等)。由于从属cmt中配置了从属设备,因此无论是VM还是物理硬件,都可以非常轻松地启动新计算机。一个Jenkins大师可以处理200多个构建奴隶。

答案 3 :(得分:0)

我同意@sti。如果仍然需要,请考虑多个项目。同时考虑https://wiki.jenkins-ci.org/display/JENKINS/Gearman+Plugin对它们进行聚类以使它们无缝连接。

答案 4 :(得分:0)

首先,我想指出,就像其他答案所描述的那样,将不同的构建队列挂钩到不同的奴隶将是推荐的解决方案,但是有一种方法可以实现相同的效果。只是主节点。

有一个名为Throttle Concurrent Builds的插件。它允许基于每个作业或跨作业设置构建并发级别。

文档有点模糊,所以这些步骤对我有用:

  1. 安装插件后,转到管理Jenkins - > 配置系统
  2. Throttle Concurrent Builds 部分中,定义作业组及其各自的并发级别。
  3. 现在,对于要限制的每个作业,转到其配置,启用 Throttle Concurrent Builds 常规部分),选择将此项目作为一个或多个类别,并分配上一步中定义的一个或多个类别(无需再次在此处设置限制)。

答案 5 :(得分:0)

我在想你正在寻找 Build Blocker插件

Github Build Blocker Plugin

Jenkins Build Blocker Plugin Information

可以通过Jenkins中的管理插件安装此插件。