删除詹金斯工作,就像使用詹金斯工作dsl

时间:2019-12-27 16:28:44

标签: jenkins jenkins-plugins jenkins-groovy jenkins-job-dsl

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

我想知道代码库中的内容,我认为这是行不通的。

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

基本上是:

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

Huuuge谢谢

2 个答案:

答案 0 :(得分:0)

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

import jenkins.model.*

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

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

如果您的工作名称中没有共享相同的模式,并且您无法使用Regex,则herehere是一些用于读取具有Groovy的文件的资源。

答案 1 :(得分: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}