Jenkins:Groovy:如何在Node标签更改时更新队列

时间:2014-07-08 05:49:09

标签: groovy jenkins label

我在Slaves上运行集成测试,标签为"IntegrationTest"。 当作业开始时,我使用Node.setLabelString(String)将Slave标签从IntegrationTest修改为"_out_IntegrationTest",以阻止此从属设备运行下一轮集成测试,因为我们需要将此从属设备恢复到清洁环境之前整合测试。

问题是,队列中的以下Integration Test作业仍然可以使此奴隶运行,即使其标签由"_out_IntegrationTest"设置为Node.setLabelString(String)

我不确定Label是否被修改,但是队列没有意识到这一点。

当我从Web UI手动将slave Label修改为"_out_IntegrationTest"时,集成测试作业将无法在此从属服务器上运行。

Node.setLabelString(String)修改了从属标签时,作业仍然可以在其上运行。

注意: 调用Queue.maintain()后调用Node.setLabelString(String)

1 个答案:

答案 0 :(得分:0)

我的工作场所也有类似情况,我需要在运行作业后重新启动奴隶。所以我有一个单独的工作,重新启动它运行的奴隶。作为主要作业中的第一个构建步骤,我请求使用参数“在同一节点上构建”来安排重新启动作业的参数化构建。重新启动作业配置了非常高的优先级(通过Priority Sorter Plugin),以确保它是该节点上的下一个作业。然后我有主要工作的其他构建步骤来执行其所需的任务。

当主作业完成后,重启作业进入并重新启动从站 - 在这里您可以执行从站恢复到干净环境。

enter image description here