Как получить информацию обо всех параллельных работах по сборке внутри Jenkinsfile (конвейер) - PullRequest
0 голосов
/ 11 мая 2018

Я хотел предпринять некоторые действия на основе всех одновременных запущенных заданий displayName перед началом нового запуска того же конвейерного задания.

Не удалось получить удовлетворительную ссылку, если кто-то попробовал нечто подобное, пожалуйста, поделитесь.

1 Ответ

0 голосов
/ 12 октября 2018

Мог бы написать следующий код для достижения моей цели, он работает абсолютно нормально.Уловка заключается в том, чтобы использовать одинаковый формат отображаемого имени во всех заданиях и идентифицировать его в цикле.Этот фрагмент кода написан в примере папки 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()
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...