【问题标题】:How can I delete a job and run cleanup code with JobDSL in Jenkins?如何在 Jenkins 中使用 JobDSL 删除作业并运行清理代码?
【发布时间】:2020-02-04 22:14:23
【问题描述】:

类似这个问题:https://stackoverflow.com/questions/33784488/how-can-i-delete-a-job-using-job-dsl-pluginscript-in-jenkins#=

问题是如果我将removeAction('DELETE') 添加到 DSL,该作业将被删除,这正是我想要的,但我还想运行一些清理代码。有没有办法查询 JobDSL,或者获取正在创建的新作业与上次运行之前存在的作业的增量?

上下文是,我正在使用 JobDSL 为 GIT 存储库中存在的每个分支创建管道作业。删除分支后,我想删除作业并运行一些清理代码。

【问题讨论】:

    标签: git jenkins groovy jenkins-pipeline jenkins-job-dsl


    【解决方案1】:

    种子作业的每个构建都将生成的作业的名称存储在 GeneratedJobsBuildAction 中。如果您将上次构建的生成作业与之前的构建进行比较,您会得到已删除的作业的名称。

    您可以在 Jenkins 脚本控制台中尝试以下示例,以获取上次运行种子作业时已删除的作业的名称:

    import javaposse.jobdsl.dsl.GeneratedJob
    import javaposse.jobdsl.plugin.actions.GeneratedJobsBuildAction
    
    FreeStyleProject seedJob = Jenkins.instance.getItem('seed')
    
    FreeStyleBuild lastBuild = seedJob.lastBuild
    FreeStyleBuild previousBuild = lastBuild.previousBuild
    
    Set<GeneratedJob> lastGeneratedJobs = lastBuild.getAction(GeneratedJobsBuildAction).modifiedObjects
    Set<GeneratedJob> previousGeneratedJobs = previousBuild.getAction(GeneratedJobsBuildAction).modifiedObjects
    
    print previousGeneratedJobs*.jobName - lastGeneratedJobs*.jobName
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多