首页 文章

临时排除作业在标签组中的节点上运行的简单方法

提问于
浏览
0

我不能临时排除特定作业在标签组中的节点上运行 .

jobA,jobB,jobC绑定在标签上运行一般nodeA,nodeB,nodeC上有标签general .

假设jobA在nodeA上开始一直失败 .

我今天看到的唯一解决方案是将nodeA脱机以用于所有作业或重新配置许多作业或节点,这非常耗时 . 我们使用JOB-DSL来配置作业,因此更改作业配置需要签入 .

对我们来说理想的情况是在节点上进行配置:
排除名称为jobA的职位

是否有一些简单的方法来配置jobA应该暂时只在nodeB和节点C上运行,jobB / C应该仍然在标签general中的所有节点上运行?

4 回答

  • 0

    你也可以在jobA中使用 NodeLabel Parameter Plugin . 使用此插件,您可以定义应允许在其上执行作业的节点 . 只需添加参数节点并选择除nodeA之外的所有节点 . https://wiki.jenkins-ci.org/display/JENKINS/NodeLabel+Parameter+Plugin

  • 0

    创建参数化作业以运行某些job-dsl配置 . 将其中一个参数设置为“选择”,列出您可能想要更改的作业名称 .

    另一个参数将选择一个标签,用于定义要在其上运行作业的节点 . (您可以在节点上拥有多个标签) .

    job-dsl脚本然后更新作业标签 .
    这个groovy脚本将启用/禁用文件夹中的所有作业:

    // "State" job parameter (choice, DISABLED|ENABLED)
    def targetState = ('DISABLED'.equalsIgnoreCase(State))
    
    // "Folder" job parameter (choice or free-text)
    def targetFolderPath = Folder.trim() 
    
    def folder = findFolder(jenkins, targetFolderPath)
    println "Setting all jobs in '${folder.name}' to '${targetState}'"
    for (job in folder.getAllJobs()) {
        job.disabled = targetState
        println "updated job: ${job.name}"
    }
    
  • 0

    对于一个简单的快速排除,我认为原始问题所指的是"The only solutions that I see today are ... reconfigure ... jobs or nodes"见另一个答案:https://stackoverflow.com/a/29611255/598656

  • 1

    要停止使用具有给定标签的节点,一种策略是简单地更改标签 . 例如 . 假设标签是

    BUILDER

    将标签更改为

    -BUILDER

    将为管理员保留信息,但使用 BUILDER 作为标签的任何作业都不会选择该节点 .

    要允许作业在节点上运行,可以将节点选择更改为

    BUILDER||-BUILDER

    改组标签时的有用范例 .

    NOTE 作业可能仍然使用先前的标签选择一段时间 .

相关问题