-
新建流水线项目
-
配置jenkins流水线项目触发方式为Opened Merge Request Events
配置目标分支和生成token
3. gitlab添加jenkins项目的webhook
在这里插入图片描述
强制拦截配置
4. 配置流水线
pipeline {
agent {
node {
// 节点名称
label '10.8.100.11'
customWorkspace "${env.JOB_NAME}/${env.BUILD_NUMBER}"
}
}
options {
timestamps()
gitLabConnection('gitLab')
}
stages {
stage('PreEnv') {
steps {
sh "env"
sh 'java -version'
}
}
stage('Checkout') {
steps {
updateGitlabCommitStatus name: 'build', state: 'running'
checkout changelog: false, 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}"
]],
submoduleCfg: [],
userRemoteConfigs: [[
url: "${env.gitlabSourceRepoURL}"
]]
]
sh 'git pull git@ip.端口/xxxxx/xxxxxxxx.git dev'
}
}
stage('Build') {
steps {
sh 'cd 编译目录/; mvn clean install -Dmaven.test.skip=true'
// 清除工作区
cleanWs()
// 删除工作目录
dir("${env.WORKSPACE}@tmp") {
deleteDir()
}
}
}
}
post {
success {
updateGitlabCommitStatus name: 'build', state: 'success'
}
failure {
updateGitlabCommitStatus name: 'build', state: 'failed'
addGitLabMRComment comment: "构建日志地址:${env.BUILD_URL}console"
}
unstable {
updateGitlabCommitStatus name: 'build', state: 'success'
addGitLabMRComment comment: "构建日志地址:${env.BUILD_URL}console"
}
aborted {
updateGitlabCommitStatus name: 'build', state: 'failed'
}
}
}
复制代码
5. 测试, 通过自己的分支向master分支提交MR
转载:https://www.cnblogs.com/fireblackman/p/15893652.html