декларативный конвейер jenkins, игнорирующий список изменений jenkinsfiles - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть приложения и их коды в git репозиториях. Также jenkinsfiles для создания приложений и этих файлов в другом хранилище. Проблема в том, что Дженкинс строит журнал изменений. Дженкинс добавляет журнал изменений jenkinsfiles для создания наборов изменений, и я не хочу этого. Потому что эти изменения в соответствии с инфраструктурой не имеют отношения к приложениям. Как это предотвратить? Я не нашел обходного пути или решения.

1 Ответ

1 голос
/ 25 апреля 2020

Если я хорошо понял ваш вопрос ... Я не думаю, что вы можете удалить изменения Jenkinsfile из набора изменений, который Jenkins читает из git, но вместо этого вы можете пропустить свой конвейер для сборки, если есть только изменения на Jenkinsfile.

Если это поможет ... Во-первых, вам нужно прочитать набор изменений:

    def changedFiles = []
    for (changeLogSet in currentBuild.changeSets) { 
        for (entry in changeLogSet.getItems()) { 
            for (file in entry.getAffectedFiles()) {
                changedFiles.add(file.getPath())
            }
        }
    }

Затем вы можете проверить, является ли он только Jenkinsfile:

if (changedFiles.size() == 1 && changedFiles[0] == "Jenkinsfile"){
    println "Only Jenkinsfile has changed... Skipping build..."
    currentBuild.getRawBuild().getExecutor().interrupt(Result.SUCCESS) // this skips your build prematurely and makes the rest of the stages green
    sleep(1) // you just need this
}else{
    println "There are other changes rather than only Jenkinsfile, build will proceed."
}

PS У вас есть несколько способов прервать работу раньше, не отказывая при сборке, но этот является самым чистым в моем опыте, хотя вам нужно разрешить некоторое разрешение для подписи администратора на Jenkins (я видел это в другом потоке здесь какое-то время go, не могу найти его сейчас)

...