用于Jenkins中合并请求的GitLab管道

时间:2019-06-18 13:52:36

标签: jenkins gitlab jenkins-pipeline

我正在GitLab与Jenkins之间进行CI集成,我想根据打开的合并请求(MR)的目标分支进行特定的验证。

更具体地说,我们有一个包含Flyway数据库迁移的存储库,并且我们想在Docker容器内验证迁移是否可以成功地应用于不同的环境。可以通过合并请求的目标分支来推断目标环境。

现在,我的问题是这个。我想拒绝无法成功构建的MR,但是我找不到拒绝MR的方法,只能提交。

我们的集成设置方式是Jenkins接收有关提交和MR事件的Webhook通知。因此,当有人向MR提交新提交时,将触发两个Jenkins构建-一个用于整个MR,另一个用于提交。 MR构建将失败,但是提交构建将成功,并且由于运行方式的竞争条件,GitLab中的MR管道将被标记为成功,尽管不应该如此。

在Jenkins-GitLab集成中是否可以将合并请求标记为失败?

我相信该功能在GitLab的内置CI / CD支持中称为pipelines for merge requests,但是可以用Jenkins进行模拟吗?

这是我正在使用的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"
        }
      }
    }
  }
}

0 个答案:

没有答案