我正在使用Jenkins进行测试。我有许多测试服(一个字符串参数)和许多节点。特定的测试服只能在特定的节点上运行,例如:
要运行测试,我必须选择一个测试套件和一个或多个节点,这很棒,我仍然想使用此功能。
我想要什么? 当我仅选择一个测试套件时-用户将不会选择任何节点-该节点将通过脚本/插件动态选择-它应取决于所选的测试套件和节点的可用性(例如,我选择了test_suite_1和node_1繁忙,则此脚本应选择node_2或node_3。
我知道NodeLabel参数有一个默认的节点-但正如我之前提到的,特定的测试服只能在特定的节点上运行,因此不可能为每个测试套件都设置一个默认的节点。
如何在NodeLabel参数插件中自动选择Node? p>
我找到了Groovy Label Assignment插件,但是当我同时具有Node参数和Label参数时-无论Label中包含什么,Node参数中的值都具有更高的优先级。
答案 0 :(得分:0)
您的prior question因过于广泛而被关闭。我对此的回复由于没有足够的上下文而被删除,因此让我们尝试再次回答...
(ps:您可能希望用在评论中添加的详细信息来重新表达您的问题)
您有2个测试和5个节点,分为2组。
在节点1、2和3上创建标签(例如:GROUP_A)。
詹金斯|管理节点| [选择一个节点] |配置
在“标签”下,添加“ GROUP_A ”,然后保存
对节点4、5做类似的操作(即GROUP_B)
对于test_suite_1,请在“常规”下进行配置
[ X ]限制可以在哪里运行此项目
标签表达式:“ GROUP_A ”
对test_suite_2做类似的事情。
现在,test_suite_1将在 GROUP_A 中的任何节点上运行,而test_suite_2将仅在 GROUP_B 中的任何节点上运行。这就是Node labels的目的。 Usage example here。
通常,Jenkins作业是粘性的,因此除非发生故障,否则它们会坚持到其运行的最后一个节点。您可以使用Least Load Plugin(wiki)将此行为更改为在最不繁忙的节点上运行。
根据描述:默认情况下,詹金斯(Jenkins)尝试将作业分配给 最后一个节点已执行。这可能导致节点遗留 其他节点超载时处于空闲状态。该插件会覆盖 默认行为,并将作业分配给负载最小的节点。
我不知道如果没有指定选项,您是否可以将其默认为分组,如果您提供参数,可以使其在特定节点上运行,但是我也不知道您是否需要。您可以调查“ Node and Label parameter”插件的使用。也许是(GROUP_A)||(${SELECTEDNODE})
的正则表达式,其中SELECTEDNODE
是从选择选项
我们不使用Node and Label plugin,但我不认为您可以在所有节点上同时运行您的作业(“ 1)选择多个节点来运行测试”,“我可以选择多个节点一次”),除非您选择了多个节点,否则除非您切换到多配置项目;它是“选定的一项”选项吗?您必须对此进行测试。