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

Jenkins多分支流水线配置:Gitlab触发master推送与合并请求

Jenkins多分支流水线GitLab触发规则配置方案

方案一:通过GitLab触发器参数精准控制

直接在triggers块中配置GitLab触发器,利用参数区分推送事件和合并请求事件的过滤规则:

pipeline {
    agent any
    triggers {
        gitlab(
            triggerOnPush: true,
            triggerOnMergeRequest: true,
            // 仅对master分支的推送事件生效
            branchFilterType: 'NameBasedFilter',
            branchFilterName: 'master',
            // 允许所有合并请求触发(不受分支过滤规则限制)
            mergeRequestTriggerType: 'All'
        )
    }
    stages {
        stage('Build') {
            steps {
                echo '执行构建步骤'
            }
        }
        // 按需添加其他stage
    }
}

这里的关键是mergeRequestTriggerType: 'All',它会让合并请求触发不受branchFilterName的限制,仅让分支过滤规则作用于推送事件,正好匹配你需要的两个触发场景。

方案二:通过when条件过滤流水线执行

如果触发器参数配置无法满足需求,也可以在流水线级别添加when条件,让只有符合规则的事件才执行流水线:

pipeline {
    agent any
    triggers {
        // 先允许所有推送和合并请求触发webhook
        gitlab(triggerOnPush: true, triggerOnMergeRequest: true)
    }
    // 流水线级别的条件判断,不满足则直接跳过所有stage
    when {
        anyOf {
            // 匹配master分支的推送
            branch 'master'
            // 匹配任何开放的合并请求
            changeRequest()
        }
    }
    stages {
        stage('Build') {
            steps {
                echo '执行构建步骤'
            }
        }
    }
}

注意要将when放在pipeline块下、stages之前,这样是对整个流水线生效,而不是单个stage。之前你用changeRequest()没生效,大概率是把条件放在了单个stage里,导致流水线仍会启动只是跳过该stage,而非完全不触发。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 22:46:28