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

如何同时按源和目标分支过滤PR,阻止发布分支触发CI?

实现PR的源+目标分支双重过滤

当然可以同时按源和目标分支来过滤CI触发条件,以主流的GitHub Actions为例,你可以通过事件配置和上下文变量组合实现精确控制,完全满足你的需求。

场景1:仅对「目标是master且源不是release/master」的PR触发测试

如果你的核心需求是:原本对所有指向master的PR跑测试,但从release/master发起的PR(往master合)不需要触发,可以这么写工作流配置:

on:
  pull_request:
    # 先限定PR的目标分支为master
    branches:
      - master
    # 可选:如果版本更新只涉及特定文件,直接忽略这些文件的变更触发
    paths-ignore:
      - 'package.json'
      - 'package-lock.json'
    types: [opened, synchronize, reopened]

jobs:
  run-tests:
    runs-on: ubuntu-latest
    # 在这里添加条件:排除源分支是release/master的情况
    if: github.head_ref != 'release/master'
    steps:
      - uses: actions/checkout@v4
      - name: Install dependencies
        run: npm install
      - name: Run test suite
        run: npm test

场景2:完全排除所有和release/master相关的PR

如果要做到不管是目标是release/master,还是源是release/master的PR,都不触发CI,可以调整成:

on:
  pull_request:
    branches:
      - master
    # 先排除目标分支是release/master的PR
    branches-ignore:
      - release/master
    types: [opened, synchronize, reopened]

jobs:
  run-tests:
    runs-on: ubuntu-latest
    # 再排除源分支是release/master的情况
    if: github.head_ref != 'release/master'
    steps:
      - uses: actions/checkout@v4
      - run: npm install && npm test

其他CI工具的思路

如果用的是GitLab CI、Jenkins等其他工具,核心逻辑一致:找到CI提供的「源分支」和「目标分支」上下文变量,在流水线的触发规则或任务执行条件中添加判断,排除release/master相关的分支组合即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 15:03:33