7

我的 Jenkins 工作中有几个集成测试。它们在多台应用服务器上运行,我想确保在一台应用服务器上同时只运行一个集成测试作业。

我需要在我的作业中使用标签或变量之类的东西来创建一组作业,然后配置在该组中只能同时运行一个作业的逻辑。

我可以为此使用排除插件吗?有没有人有这方面的经验?

4

3 回答 3

11

使用Throttle Concurrent Builds Plugin。它取代了 Locks and Latches 插件,并提供了限制为特定标签运行的作业数量的功能。

例如:您创建一个项目类别“集成测试服务器 A”并将作业与其关联,最大并发计数为 1,以及第二个“集成测试服务器 B”标签并将其他作业与其关联,这两个类别将只运行单个并发构建(假设您已将最大作业计数设置为 1),并且该类别中的其他作业将排队,直到“锁定”清除。

使用这种方法,您不必限制任何特定 Jenkins 实例上可用的执行器数量,并且将来可以轻松添加更多从属服务器,而无需重新配置所有作业。

于 2013-10-29T07:51:16.740 回答
0

如果我理解正确,您有一个应用程序服务器池,您的测试运行在哪个服务器上并不重要。他们只需要成为该服务器上的唯一测试。

我还没有看到可以做到这一点的插件。但是,您可以轻松绕过它。您需要为每个应用程序服务器配置一个从属服务器。(1 slave = 1 app server) 你需要为所有的slave分配相同的标签,每个slave只能有一个executor。然后,您分配运行集成测试的作业,以在该标签上运行。Jenkins 会将作业分配给具有该标签的下一个可用从站(或节点)。

请记住,您可以在同一块硬件上运行多个从属服务器,甚至一个主服务器和一个从服务器也可以在同一台服务器上共存。

于 2013-10-25T16:24:01.593 回答
-1

您是否在 Jenkins -> Manage Jenkins -> Configure system 中检查了以下参数

# of executors

上述参数可帮助您限制一次要执行的作业数。

Jenkins 执行器是允许构建在节点/代理(例如构建服务器)上运行的基本构建块之一。将执行程序视为单个“进程 ID”,或 Jenkins 在您的计算机上执行以运行构建的基本资源单元。有关执行器、节点/代理以及 Jenkins 的其他基础部分的更多详细信息,请参阅 Jenkins 术语。

您可以在 Remoting Best Practices 页面的执行者数量部分找到有关如何为给定代理设置 Jenkins 执行者数量的信息。来源 - https://support.cloudbees.com/hc/en-us/articles/216456477-What-is-a-Jenkins-Executor-and-how-can-I-best-utilize-my-executors

于 2020-02-03T11:12:50.093 回答