我不能临时排除特定作业在标签组中的节点上运行 .
jobA,jobB,jobC绑定在标签上运行一般nodeA,nodeB,nodeC上有标签general .
假设jobA在nodeA上开始一直失败 .
我今天看到的唯一解决方案是将nodeA脱机以用于所有作业或重新配置许多作业或节点,这非常耗时 . 我们使用JOB-DSL来配置作业,因此更改作业配置需要签入 .
对我们来说理想的情况是在节点上进行配置:
排除名称为jobA的职位
是否有一些简单的方法来配置jobA应该暂时只在nodeB和节点C上运行,jobB / C应该仍然在标签general中的所有节点上运行?
4 回答
你也可以在jobA中使用 NodeLabel Parameter Plugin . 使用此插件,您可以定义应允许在其上执行作业的节点 . 只需添加参数节点并选择除nodeA之外的所有节点 . https://wiki.jenkins-ci.org/display/JENKINS/NodeLabel+Parameter+Plugin
创建参数化作业以运行某些job-dsl配置 . 将其中一个参数设置为“选择”,列出您可能想要更改的作业名称 .
另一个参数将选择一个标签,用于定义要在其上运行作业的节点 . (您可以在节点上拥有多个标签) .
job-dsl脚本然后更新作业标签 .
这个groovy脚本将启用/禁用文件夹中的所有作业:
对于一个简单的快速排除,我认为原始问题所指的是"The only solutions that I see today are ... reconfigure ... jobs or nodes"见另一个答案:https://stackoverflow.com/a/29611255/598656
要停止使用具有给定标签的节点,一种策略是简单地更改标签 . 例如 . 假设标签是
BUILDER
将标签更改为
-BUILDER
将为管理员保留信息,但使用
BUILDER
作为标签的任何作业都不会选择该节点 .要允许作业在节点上运行,可以将节点选择更改为
BUILDER||-BUILDER
改组标签时的有用范例 .
NOTE 作业可能仍然使用先前的标签选择一段时间 .