Событие перехвата Github в ветке удаления вызывает сбой задания Jenkins

#jenkins #github #jenkins-pipeline #hook

#дженкинс #github #jenkins-конвейер #перехват

Вопрос:

В Jenkins у меня есть конвейер, настроенный для запуска при внесении изменений в любую ветку Github, начинающуюся с «release». Для этого я использую триггер перехвата Github и спецификатор ветки, соответствующий выражению «origin / release / *».

В нашем рабочем процессе git эти ветки не предназначены для вечной жизни, поэтому их часто удаляют.

Чего я ожидал, так это запуска конвейера при каждой фиксации каждой ветки выпуска. Однако конвейер также запускается при удалении ветки.

Как я могу игнорировать событие удаления ветки в моем конвейере? Я уже пытался не отправлять событие из Github при удалении ветки, но, похоже, для этого нет возможности. Опция события «push» отправляет событие при удалении ветки.

Спасибо!

Комментарии:

1. > В Jenkins у меня есть конвейер, настроенный для запуска при внесении изменений в любую ветку Github, начинающуюся с «release» — какое событие вы на самом деле настроили на webhook?

Ответ №1:

Мне удалось решить мою проблему. Вот как я начинал конвейер :

 node('staging') {
        GIT_PROJECT_NAME = "myrepo"
        stage("clone repository") {
                git credentialsId: "${GIT_PROJECT_NAME}",
                    url: "git@github.com:${GIT_PROJECT_NAME}.git"

                scmVars = checkout scm
                branch = scmVars.GIT_BRANCH
                sh ('git checkout ${branch}')
        }
  

Идея, стоящая за этим, заключалась в проверке ветки, из которой был запущен конвейер.
Однако это привело к запуску конвейера независимо от ветки.

Вот как я решил это :

 node('staging') {
    GIT_PROJECT_NAME = "myrepo"
    stage("clone repository") {
            scmVars = checkout scm
            branch_tmp = scmVars.GIT_BRANCH
            branch = branch_tmp.replace("origin/","")
            git branch: "${branch}",
                credentialsId: "${GIT_PROJECT_NAME}",
                url: "git@github.com:${GIT_PROJECT_NAME}.git"
    }
  

При этом мне не нужно «вручную» проверять правильную ветку.
Это решение работает, конвейер теперь запускается только при выполнении нажатия на ветки, соответствующие моему спецификатору ветки.

Ответ №2:

Это не имеет большого значения. Просто оставьте его завершенным. Кажется, не повредило.