Jenkins中用于合并请求的GitLab管道
我正在进行GitLab和Jenkins之间的CI集成,我希望根据开放合并请求(MR)的目标分支进行特定的验证 更具体地说,我们有一个包含Flyway数据库迁移的存储库,我们希望在Docker容器中验证迁移是否可以成功应用于不同的环境。可以通过合并请求的目标分支推断目标环境 现在,我的问题是这个。我想拒绝没有成功构建的MRs,但我找不到拒绝MRs的方法,只有提交 我们的集成设置方式是Jenkins接收提交和MR事件的webhook通知。因此,当有人将新提交推送到MR时,将触发两个Jenkins构建—一个用于整个MR,另一个用于提交。MR构建将失败,但提交构建将成功,并且由于构建如何运行的竞争条件,GitLab中的MR管道将被标记为成功,尽管它不应该成功 在Jenkins-GitLab集成中是否有方法将合并请求标记为失败 我相信这个特性是在GitLab的内置CI/CD支持中调用的,但是Jenkins可以模拟它吗 下面是我使用的Jenkins文件的草图:Jenkins中用于合并请求的GitLab管道,jenkins,gitlab,jenkins-pipeline,Jenkins,Gitlab,Jenkins Pipeline,我正在进行GitLab和Jenkins之间的CI集成,我希望根据开放合并请求(MR)的目标分支进行特定的验证 更具体地说,我们有一个包含Flyway数据库迁移的存储库,我们希望在Docker容器中验证迁移是否可以成功应用于不同的环境。可以通过合并请求的目标分支推断目标环境 现在,我的问题是这个。我想拒绝没有成功构建的MRs,但我找不到拒绝MRs的方法,只有提交 我们的集成设置方式是Jenkins接收提交和MR事件的webhook通知。因此,当有人将新提交推送到MR时,将触发两个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
的简化版本更新了我的问题。