1. 新建流水線項目
2. 配置jenkins流水線項目觸發方式為Opened Merge Request Events
配置目標分支和生成token
3. gitlab添加jenkins項目的webhook
強制攔截配置
4. 配置流水線
pipeline { agent { node { // 節點名稱 label 'node-1' customWorkspace "${env.JOB_NAME}/${env.BUILD_NUMBER}" } } options { gitLabConnection('gitlab') } stages { stage('PreEnv') { steps { script { RECEIVER = RECEIVER } sh 'java -version' } } stage('Checkout') { steps { checkout changelog: true, poll: true, scm: [ $class: 'GitSCM', branches: [[name: "origin/${env.gitlabSourceBranch}"]], doGenerateSubmoduleConfigurations: false, extensions: [[ $class: 'PreBuildMerge', options: [ fastForwardMode: 'FF', mergeRemote: 'origin', mergeStrategy: 'default', mergeTarget: "${env.gitlabTargetBranch}" ] ]], extensions: [[ $class: 'UserIdentity', email: "${env.gitlabUserEmail}", name: "${env.gitlabUserName}" ]], extensions: [[ $class: 'RelativeTargetDirectory', relativeTargetDir: 'ningbo-port-cloud-platform' ]], submoduleCfg: [], userRemoteConfigs: [[ url: "${env.gitlabSourceRepoURL}" ]] ] } } stage('Build') { steps { // TODO UnitTest echo 'start Build ......' } } } post { success { send_email('Succeed', "$RECEIVER") updateGitlabCommitStatus(name: 'build', state: 'success') } failure { send_email('Failed', "$RECEIVER") updateGitlabCommitStatus(name: 'build', state: 'failed') addGitLabMRComment comment: "構建日志地址:${env.BUILD_URL}console" } unstable { send_email('unstable', "$RECEIVER") updateGitlabCommitStatus(name: 'build', state: 'success') addGitLabMRComment comment: "構建日志地址:${env.BUILD_URL}console" } aborted { send_email('Aborted', "$RECEIVER") updateGitlabCommitStatus(name: 'build', state: 'failed') } } } def send_email(String result, String receiver) { emailext ( subject: "Build: ' + $result", body: '$DEFAULT_CONTENT', to: "$receiver" ) }
5. 測試, 通過自己的分支向master分支提交MR
參考鏈接:https://blog.csdn.net/nklinsirui/article/details/100521145