jenkins - 如何避免 Jenkins 多分支管道作业触发自身

标签 jenkins jenkins-pipeline

我希望我的 Jenkins 多分支管道工作避免触发自身。该作业进行提交,因为它增加了版本文件并将其检入源代码管理,这会导致无限循环。

在正常工作中我可以关注 these instructions避免这个循环(虽然这不是最干净的方法)。

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

最佳答案

使用 GIT 时的解决方法:

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

在 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
    }
}

关于jenkins - 如何避免 Jenkins 多分支管道作业触发自身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45696788/

相关文章:

java - Windows 上不使用 Github 的 Jenkins Pipeline

jenkins - 在流水线 SH 脚本中使用 Jenkins 环境变量

maven - Jenkins Pipeline Maven Artifactory 插件无法从中央 Maven 存储库解析 Artifact

plugins - 如何手动安装 Jenkins Sonar 插件?

testing - 在 Jenkins 中显示单个测试结果的历史记录 - 附加插件或配置问题?

java - Jenkins Junit 中的 WireMock - BindException : Address already in use

Jenkins 多分支管道不安排标记作业

jenkins - Jenkins 插件可轻松向作业添加其他操作

jenkins - maven 多模块 pom 和 jenkins 作业

groovy - 从Jenkins Pipeline Groovy脚本加载配置文件的推荐方法