1. 程式人生 > 其它 >【jenkins】gitlab配置MR jenkins流水線門禁

【jenkins】gitlab配置MR jenkins流水線門禁

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