2012-01-04 40 views
5

在Jenkins中我有许多不同的工作,它们被划分为具有自己的构建/测试/分析“管线”的项目。这些作业中的大部分实际上都是远程命令,而不是现成的版本。Jenkins中的多个构建队列

但是,詹金斯开箱即用只支持一个排队队列全部构建。我想为每个项目(或视图)定义一个队列。

我该如何做到这一点?

回答

4

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

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

这种方法也减少了詹金斯主人是单点故障的程度。

+0

不,我要求有多个*队列*的能力。我可以提高队列中并发作业的数量。 – 2012-01-04 18:00:09

+0

你可以扩展你为什么需要多个队列吗? – 2012-01-04 19:16:26

+0

我有多个项目。每个项目都有自己的管道。每个项目都可以与其他项目同时进行构建,最多可以达到一定的限制X--即受其工具集的许可限制。构建可以在本地(罕见)或远程(常见)启动。理想情况下,詹金斯没有安装在每台机器上(管理成本非常高) - 有一个中央调度器向远程编译器发送命令。 – 2012-01-04 20:56:17

0

你想要的只能通过为每个项目运行一个单独的Jenkins master来完成。

通常人们认为詹金斯大师比奴隶有更多的管理开销,但如果这不适合您,您可以在服务器上运行多个主人,只需为他们分配不同的端口。

如果这对你不好,那Jenkins可能不适合你。它不是那里唯一的CI服务器。詹金斯非常容易设置,但另一方面,不可能进行深度定制,比如多个构建队列。

0

我知道这个线程是旧的,但我认为我会反正评论。

IMO

我会使用一个主人和多个奴隶。但通过配置管理工具或CMT(Chef,Puppet,Ansible等)来管理工具配置要求。我会通过特定要求的标签(windows,linux,Mac,visualstudio,maven等)将管道锁定到特定的构建从站。 android-sdk等)。由于从属设备是在您的cmt中配置的,因此无论它是虚拟机还是物理硬件,都可以轻松启动新机器。一个詹金斯大师可以处理200多个构建奴隶。

0

首先,我想指出的是,与其他答案一样,将不同的构建队列挂接到不同的从站将是推荐的解决方案,但是有一种方法可以实现与主节点相同的效果。

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

的文档是有点模糊,所以这些都是为我工作的步骤:

  1. 安装插件后,转到管理詹金斯 - >配置系统
  2. 节流并发构建部分定义了作业组及其各自的并发级别。
  3. 现在对于要限制每个作业,去它的配置,使节流并行构建一般部分),选择节流这个项目作为一个或多个类别的一部分,并指定一个或多个在上一步中定义的类别(不需要再次设置限制)。