将詹金斯作业删除为使用詹金斯作业dsl

问题描述 投票:0回答:2

我正在使用jenkins job dsl创建pipelineJob,我不知道如何通过同一插件删除这些作业。

我想在代码库中四处寻找,但我认为这是不可行的。

[我曾考虑过使用rest api来调用api来删除工作,任何人都可以给我任何指导,以解决这些问题的方法或扩展Java类。

基本上是:

  • 读取job.groovy文件中的作业名称
  • 调用其余的api(jenkins_base_url + / job + / doDelete)

Huuuge谢谢

jenkins jenkins-plugins jenkins-groovy jenkins-job-dsl
2个回答
1
投票

我没有使用herehere中的脚本,但它们看起来很有希望。

import jenkins.model.*

def matchedJobs = Jenkins.instance.items.findAll { job ->
    job.name =~ /my_regex_here/
}

matchedJobs.each { job ->
    println job.name
    //job.delete();
}

如果您的作业名称中没有共享通用模式,并且您不能使用正则表达式,则herehere是一些用于读取常规文件的资源。


0
投票

最后,为了满足我的需要,我必须进行api调用。

看起来像这样:

RestApiJobManagement jm = new RestApiJobManagement(baseUrl)
HttpResponseDecorator resp = jm.restClient.get(path: 'crumbIssuer/api/xml')   
    if (resp.status == 200) {                                                     
        restClient.headers[resp.data.crumbRequestField] = resp.data.crumb         
    }                                                                             
resp = jm.restClient.post(
    path: '/job/${job.jobName}/doDelete',
    requestContentType: 'charset=UTF-8'
)
println "status ${resp.status}"

唯一的问题是我无法读取jenkinsjobdsl.groovy文件并无法获取所有作业名称以填充$ {job.jobName}

© www.soinside.com 2019 - 2024. All rights reserved.