Конвейеры GitLab для запросов на слияние в Jenkins - PullRequest
0 голосов
/ 18 июня 2019

Я работаю над интеграцией CI между GitLab и Jenkins, где я хочу выполнить конкретную проверку в зависимости от целевой ветви открытого запроса на слияние (MR).

Если говорить более конкретно, у нас естьрепозиторий, содержащий миграции баз данных Flyway, и мы хотели бы проверить в контейнере Docker, могут ли миграции быть успешно применены в различных средах.Целевая среда может быть выведена целевой ветвью запроса на слияние.

Теперь моя проблема заключается в следующем.Я хотел бы отклонить MR, которые не были успешно построены, но я не смог найти способ отклонения MR, только коммиты.

Способ нашей интеграции заключается в том, что Jenkins получает уведомления от webhook для обоих коммитов.и события MR.Таким образом, когда кто-то отправляет новый коммит в MR, будут запущены две сборки Jenkins - одна для всего MR и одна для фиксации.Сборка MR не удастся, но фиксация сборки будет успешной, и из-за условий гонки в том, как выполняются сборки, конвейер MR в GitLab будет помечен как успешный, хотя это не должно быть.

Есть лиспособ пометить запросы на слияние как неудачные в интеграции Jenkins-GitLab?

Я считаю, что эта функция называется конвейерами для запросов на слияние во встроенном CI / CD GitLabподдержка, но можно ли имитировать с Дженкинсом?

Вот эскиз Jenkinsfile, который я использую:

def isMergeRequest() {
  gitlabActionType == 'MERGE' && gitlabTargetBranch != gitlabSourceBranch
}

pipeline {
  agent any

  stages {
    stage('Validate') {
      when {
        expression {
          isMergeRequest()
        }
      }

      steps {
        gitlabCommitStatus('Validate') {
          sh "jenkins/validate_mr.py $gitlabTargetBranch $gitlabSourceBranch"
        }
      }
    }
  }
}
...