【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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM