..

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')
            }
        }
    }
}