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

问题描述 投票:5回答:2

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

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

我可以使用Exclusion插件吗?有人有经验吗?

jenkins jenkins-plugins
2个回答
6
投票

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

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

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


0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.