Jenkins pipeline 如何获取Jenkins文件(管道)中所有并发构建作业的信息

Jenkins pipeline 如何获取Jenkins文件(管道)中所有并发构建作业的信息,jenkins-pipeline,Jenkins Pipeline,在启动同一管道作业的新运行之前,我希望根据所有并发运行的作业displayName执行一些操作 无法获得任何令人满意的参考,如果有人尝试过类似的东西,请与大家分享。可以编写以下代码来实现我的目标,它工作得非常好。 Catch是在所有作业中使用相同的Displayname格式,并在循环中标识相同的内容。 这段代码写在共享库vars文件夹中,例如:vars/abortPreviousWorklow.groovy import hudson.model.Result import hudson.mod

在启动同一管道作业的新运行之前,我希望根据所有并发运行的作业displayName执行一些操作


无法获得任何令人满意的参考,如果有人尝试过类似的东西,请与大家分享。

可以编写以下代码来实现我的目标,它工作得非常好。 Catch是在所有作业中使用相同的Displayname格式,并在循环中标识相同的内容。 这段代码写在共享库vars文件夹中,例如:vars/abortPreviousWorklow.groovy

import hudson.model.Result
import hudson.model.Run
import jenkins.model.CauseOfInterruption.UserInterruption
def call(){
    currentDisplayName = env.GERRIT_PROJECT+' '+env.GERRIT_BRANCH+' '+env.GERRIT_CHANGE_NUMBER
    Run previousBuild = currentBuild.rawBuild.getPreviousBuildInProgress()

    while (previousBuild != null) {
        if (previousBuild.isInProgress()) {
            echo ">>DisplayName of previous Build : ${previousBuild.displayName}"
            if(previousBuild.displayName.find(currentDisplayName)) {
                def executor = previousBuild.getExecutor()
                if (executor != null) {
                    echo ">> Aborting older build #${previousBuild.number}"
                    executor.interrupt(Result.ABORTED, new UserInterruption(
                        "Aborted by newer build #${currentBuild.number}"
                    ))
                }
            }
        }
        previousBuild = previousBuild.getPreviousBuildInProgress()
    }
}

你能详细说明一下吗?
Jenkins.getInstance()
应该允许您访问这些内容。让我解释一下:假设我的管道作业是在gerrit review上触发的-如果有新的补丁集进入相同的审核,我想取消以前的构建-为了处理这种情况,我在displayname中有gerrit review id和补丁集编号-我想找到所有当前正在运行的作业并查找流是否为相同的审阅ID运行,并取消其中一个。