如何在 Jenkins 中使用 JobDSL 删除作业和 运行 清理代码?

How can I delete a job and run cleanup code with JobDSL in Jenkins?

类似于这个问题:

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

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

种子作业的每个构建都将生成的作业名称存储在 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