You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在BitBucket拉取请求更新时中止Jenkins正在进行的构建?

嘿,针对你在Multi Branch Pipeline里想要PR更新时自动中止同PR正在进行的构建的需求,结合你当前的Jenkins 2.111、Bitbucket Branch Source 2.2.0和BitBucket 5.7.0环境,我整理了两个可行的方案:

方案1:用Pipeline内置的并发控制(最简单直接)

Jenkins Pipeline提供了现成的配置项来处理并发构建,刚好能满足你的需求。你只需要在Jenkinsfile里添加disableConcurrentBuilds并开启abortPrevious参数:

pipeline {
    agent any
    options {
        // 禁止同PR的并发构建,新构建触发时自动中止之前的运行中构建
        disableConcurrentBuilds(abortPrevious: true)
    }
    stages {
        // 你的构建阶段...
        stage('Build') {
            steps {
                echo '开始构建...'
                // 具体构建命令
            }
        }
        stage('Test') {
            steps {
                echo '运行测试...'
            }
        }
    }
}

这个配置的逻辑是:因为Multi Branch Pipeline里每个PR对应一个独立的Job,disableConcurrentBuilds会限制这个Job不能同时跑多个构建;加上abortPrevious: true后,当PR更新触发新构建时,Jenkins会自动终止该PR对应的Job里正在运行的旧构建。

方案2:通过Jenkins API手动中止旧构建(更灵活)

如果方案1因为插件版本兼容问题(不过你的Jenkins 2.111应该支持)或者需要更精细的控制,可以用Groovy脚本调用Jenkins内部API来实现:

pipeline {
    agent any
    stages {
        stage('中止旧构建') {
            steps {
                script {
                    // 获取当前PR对应的Job实例
                    def currentJob = currentBuild.rawBuild.getParent()
                    // 筛选出该Job下正在运行且不是当前构建的实例
                    def runningOldBuilds = currentJob.getBuilds().findAll { build ->
                        build.isBuilding() && build.number != currentBuild.number
                    }
                    // 逐个中止这些旧构建
                    runningOldBuilds.each { build ->
                        echo "正在中止PR ${env.BRANCH_NAME}的旧构建 #${build.number}"
                        build.doStop()
                    }
                }
            }
        }
        // 后续构建阶段...
    }
}

需要注意的是,这个方法需要你的Jenkins允许Pipeline脚本访问内部API,你可以在Jenkins全局安全配置里调整“脚本安全”相关的权限,确保脚本能执行这些操作。

额外提示

  • 方案1是官方推荐的方式,配置简单且稳定,优先推荐使用。
  • 两种方案都只会作用于当前PR对应的Job,不会影响其他PR或者分支的构建,完全符合你的需求。

内容的提问来源于stack exchange,提问作者Anantha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:54:31