..
jenkins pipeline 跳过特殊 commit 的方法
有时候一些 git commit 是由机器人提交的,或者类似于 maven release 插件提交的代码,我们不希望他触发 jenkins 构建。
方法1:使用 expression 判断 commit 信息
pipeline {
agent {
label "jks-web"
}
stages {
stage("git fetch") {
steps {
echo "git fetch"
}
}
stage("build") {
when {
expression {
!sh(script: "git log -1",returnStdout: true).contains("skip")
}
}
steps {
echo "build"
}
}
}
}
方法2: 使用 changelog 的正则表达式来配置 commit
pipeline {
agent {
label "jks-web"
}
stages {
stage("git fetch") {
steps {
echo "git fetch"
}
}
stage("build") {
when {
not {
changelog '.*skip-ci.*'
}
}
steps {
echo "build"
}
}
}
}
方法3: 在 script 标签中判断,如果不满足条件,则终止本次构建
stage("check commit"){
steps {
script {
def commit_msg = sh(returnStdout: true, script: 'git log -n 1 --pretty=format:"%s"').trim()
if(commit_msg.contains("skip ci")) {
currentBuild.result = 'ABORTED'
error('stop auto commit')
}
}
}
}