如果运行一种 Jenkins 作业,我如何确保只有一个



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

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

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

使用限制并发构建插件。它取代了锁和闩锁插件,并提供了限制为特定标签运行的作业数量的功能。

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

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

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

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

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

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

# 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

最新更新