3

我的问题是我的代码需要重新启动节点。我有许多需要在重新启动的节点上执行的长期运行的 Jenkins 测试作业。

我现有的解决方案是在 Jenkins 中使用相同的标签 (TestLable) 和每台机器 1 个执行程序定义多个“代理”机器。我将所有测试作业绑定到标签 (TestLable)。在测试执行脚本中,我检测到 Jenkins 机器(Jenkins env.NODE_NAME)并使用它来了解测试应该使用什么物理物理机器。

有人知道更好的解决方案吗?

以上方法可行,但我需要定义大量可能不需要的“节点/机器”。我想要的是一个能够将令牌授予 Jenkins 工作的插件。这样,在 Jenkins 执行者之前不会执行作业,并且令牌是免费的。令牌应该是一个字符串,以便我的测试作业可以使用它来了解它可以使用的外部节点。

4

1 回答 1

0

我们编写了自己的调度程序,在启动 Jenkins 节点之前分配东西。可能有更好的解决方案 - 但这主要适用于我们。我还没有遇到过可以处理不同硬件资源的复杂分配的现成调度程序。我们有 n 个盒子类型,分配给 n 个构建类型。

我们拥有的一些构建类型在不破坏所有持久数据的情况下是不兼容的——这可能是必需的,因为它需要很长时间才能收集。有些工作需要这些硬件类型的组合。我们将详细信息存储在数据库中,然后使用业务逻辑来确定如何分配。我们经常发现特定的工作类型需要额外的业务逻辑或额外的数据字段来满足他们的特定要求。

因此,最好的方法可能是使用您自己选择的语言编写您自己的调度程序,这会考虑到您的特定需求。

于 2014-11-28T10:31:00.980 回答