如何避免Jenkins multibranch管道作业触发自身

时间:2017-08-15 16:03:10

标签: jenkins jenkins-pipeline

我希望我的Jenkins multibranch管道作业能够避免触发自身。该作业进行提交,因为它会增加版本文件并将其检入源控件,从而导致无限循环。

在正常工作中,我可以按these instructions来避免这种循环(虽然这不是最干净的方式)。

这些指令不适用于多分支管道(没有“忽略某些用户的提交”选项)。 Jenkins mulitbranch管道中是否有任何方法可以防止自触发提交?

1 个答案:

答案 0 :(得分:4)

使用GIT的解决方法:

在碰撞版本并提交时,请在提交日志中使用特定消息,例如: [git-version-bump] - Bumping the version

在scm checkout之后,检查上次提交是否是版本提交提交,如果是,则中止该作业。

stage('Checkout') {
    checkout scm
    if (lastCommitIsBumpCommit()) {
        currentBuild.result = 'ABORTED'
        error('Last commit bumped the version, aborting the build to prevent a loop.')
    } else {
        echo('Last commit is not a bump commit, job continues as normal.')
    }
}

private boolean lastCommitIsBumpCommit() {
    lastCommit = sh([script: 'git log -1', returnStdout: true])
    if (lastCommit.contains("[git-version-bump]")) {
        return true
    } else {
        return false
    }
}