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