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

Jenkins中用于合并请求的GitLab管道,jenkins,gitlab,jenkins-pipeline,Jenkins,Gitlab,Jenkins Pipeline,我正在进行GitLab和Jenkins之间的CI集成,我希望根据开放合并请求(MR)的目标分支进行特定的验证 更具体地说,我们有一个包含Flyway数据库迁移的存储库,我们希望在Docker容器中验证迁移是否可以成功应用于不同的环境。可以通过合并请求的目标分支推断目标环境 现在,我的问题是这个。我想拒绝没有成功构建的MRs,但我找不到拒绝MRs的方法,只有提交 我们的集成设置方式是Jenkins接收提交和MR事件的webhook通知。因此,当有人将新提交推送到MR时,将触发两个Jenkins构建

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

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

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

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

在Jenkins-GitLab集成中是否有方法将合并请求标记为失败

我相信这个特性是在GitLab的内置CI/CD支持中调用的,但是Jenkins可以模拟它吗

下面是我使用的Jenkins文件的草图:

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"
        }
      }
    }
  }
}

你使用詹金斯的插件吗?你能分享一下你怎么称呼它吗?@segalaj是的,我正在使用这个插件。我已经用我正在使用的
Jenkins文件的简化版本更新了我的问题。你使用Jenkins的插件吗?你能分享一下你怎么称呼它吗?@segalaj是的,我正在使用这个插件。我已经用我正在使用的
Jenkinsfile
的简化版本更新了我的问题。