Jenkins 中用于测试的资源管理外部节点
Posted
技术标签:
【中文标题】Jenkins 中用于测试的资源管理外部节点【英文标题】:Resource mange external nodes in Jenkins for tests 【发布时间】:2012-06-12 14:34:07 【问题描述】:我的问题是我的代码需要重新启动节点。我有许多需要在重新启动的节点上执行的长期运行的 Jenkins 测试作业。
我现有的解决方案是在 Jenkins 中使用相同的标签 (TestLable) 和每台机器 1 个执行程序定义多个“代理”机器。我将所有测试作业绑定到标签 (TestLable)。在测试执行脚本中,我检测到 Jenkins 机器(Jenkins env.NODE_NAME)并使用它来了解测试应该使用什么物理物理机器。
有人知道更好的解决方案吗?
上述方法可行,但我需要定义大量可能不需要的“节点/机器”。我想要的是一个能够将令牌授予 Jenkins 工作的插件。这样,在 Jenkins 执行者之前不会执行作业,并且令牌是免费的。令牌应该是一个字符串,以便我的测试作业可以使用它来了解它可以使用的外部节点。
【问题讨论】:
为什么不为应该并行运行的测试设置不同的作业? 嗯。测试作业已被划分为尽可能小的 Jenkins 作业。 【参考方案1】:我们编写了自己的调度程序,在启动 Jenkins 节点之前分配内容。可能有更好的解决方案 - 但这主要适用于我们。我还没有遇到过可以处理不同硬件资源的复杂分配的现成调度程序。我们有 n 个盒子类型,分配给 n 个构建类型。
如果不破坏所有持久性数据,我们的某些构建类型是不兼容的——这可能是必需的,因为它需要很长时间才能收集。有些工作需要这些硬件类型的组合。我们将详细信息存储在数据库中,然后使用业务逻辑来确定如何分配。我们经常发现特定的工作类型需要额外的业务逻辑或额外的数据字段来满足他们的特定要求。
因此,最好的方法是使用您自己选择的语言编写您自己的调度程序,并考虑您的特定需求。
【讨论】:
以上是关于Jenkins 中用于测试的资源管理外部节点的主要内容,如果未能解决你的问题,请参考以下文章