我正在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"
}
}
}
}
}