我想在开始新的同一个管道作业运行之前,根据所有并发运行的作业displayName采取一些行动。
无法获得任何令人满意的参考,如果有人尝试了类似的东西请分享。
答案 0 :(得分:0)
能够编写以下代码来实现我的目标,它工作正常。 捕获将在所有作业中使用相同的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()
}
}