背景:为了能够提升代码质量,减少测试同学的工作,打算在开发请求合并分支的时候进行代码检测,如果检测不通过,审核人无法点击merge合并代码
环境准备:
jenkins : 2.346.3
gitlab : 15.1.0
项目分支准备: dev 、main (研发开发好代码上传到dev, 然后申请合并到main)
1、配置jenkins
(1) 安装gitlab插件
(2) 创建流水线,配置触发器
(3)编写jenkinsfile
pipeline {
agent any
stages {
stage('Checkout') {
steps {
script{
checkout([$class: 'GitSCM', branches: [[name: '*/mainn']], extensions: [], userRemoteConfigs: [[credentialsId: 'gitlab-root', url: 'http://192.168.100.205:9000/gitlab-instance-c62a5228/rocket.git']]])
}
}
}
stage('check') {
steps {
sh '''
echo "check codes !!!!!!!!!!!!!!!"
'''
}
}
}
//updateGitlabCommitStatus会将构建状态传到gitlab
post {
failure {
updateGitlabCommitStatus name: 'build', state: 'failed'
}
success {
updateGitlabCommitStatus name: 'build', state: 'success'
}
}
}
2、配置gitlab
(1) 配置项目webhook
(2) 配置 如果流水线时间失败无法合并代码
3、测试
修改dev分支代码,然后发起请求合并至main
会观察到jenkins有流水线执行
然后观察request merge
如果流水线构建失败,则处理人无法合并代码,无法显示merge按钮