如果运行一种Jenkins作业,我怎样才能确保只有一个?

时间:2013-10-25 15:27:47

标签: jenkins jenkins-plugins

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

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

我可以使用Exclusion插件吗?有没有人有这方面的经验?

3 个答案:

答案 0 :(得分:6)

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

例如:您创建一个项目类别“Integration Test Server A”并将作业绑定到最大并发计数为1,第二个“Integration Test Server B”标签并将其他作业绑定到它,两个类别都将仅运行单个并发构建(假设您已将最大作业数设置为1),该类别中的其他作业将排队,直到“锁定”已清除。

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

答案 1 :(得分:0)

如果我理解你是对的,那么你就拥有了一个应用服务器池,并且测试运行的服务器并不重要。它们只需要是该服务器上唯一的测试。

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

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

答案 2 :(得分:-1)

您是否在Jenkins-> Manage Jenkins->配置系统中检查了以下参数

# of executors

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

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

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