【问题标题】:removing jenkins job as using jenkins job dsl使用 jenkins job dsl 删除 jenkins job
【发布时间】:2019-12-27 16:28:44
【问题描述】:

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

我在代码库中转了一圈,我认为这是不可行的。

我想使用其余的 api 来调用 api 来删除作业,任何人都可以指导我如何在 groovy 中执行此操作或扩展 Java 类。

基本上是这样的:

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

谢谢你

【问题讨论】:

  • 你会发现这很有用:stackoverflow.com/questions/33784488/…
  • 我很难得到那个讨论。我想做的是删除文件中描述的所有作业。我有一个文件 pipelines.groovy: ``` pipelineJob("example-1") {} pipelineJob("example-2") {} ``` 我想从 cli 运行命令来删除管道中的所有 pipelineJobs。时髦的

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


【解决方案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 是一些使用 groovy 读取文件的资源。

【讨论】:

    【解决方案2】:

    最后,为了满足我的需求,我不得不进行 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}

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-20
      • 1970-01-01
      • 2015-03-25
      • 1970-01-01
      相关资源
      最近更新 更多