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

如何配置Circle CI仅在发起PR时运行,合并分支时不执行?

配置Circle CI实现仅针对特定分支的PR触发构建

要实现仅在针对特定分支发起拉取请求(PR)时执行构建,而代码合并到该分支时不触发,你可以通过Circle CI的工作流条件判断和分支过滤来精准控制。以下是具体配置方案:

完整配置示例

假设你希望仅在PR指向main分支时触发构建,合并到main时不执行,以下是.circleci/config.yml的配置:

version: 2.1

# 定义你的构建任务
jobs:
  build:
    docker:
      - image: cimg/base:stable  # 根据项目技术栈选择对应镜像
    steps:
      - checkout
      - run: echo "执行你的构建逻辑,比如依赖安装、测试、打包等"

# 配置工作流,控制触发时机
workflows:
  pr-target-main-build:
    jobs:
      - build:
          # 过滤直接推送到main分支或标签触发的构建
          filters:
            branches:
              ignore: main
            tags:
              ignore: /.*/
          # 仅当是PR且目标分支为main时触发
          when: << pipeline.git.pr.number >> != '' && << pipeline.git.pr.base_branch >> == 'main'

关键配置说明

  1. 分支过滤(filters)

    • branches.ignore: main:直接排除所有针对main分支的推送/合并操作,避免代码合并到main时触发构建。
    • tags.ignore: /.*/:若无需标签触发构建,可忽略所有标签类触发。
  2. 触发条件(when)

    • << pipeline.git.pr.number >> != '':判断当前构建是否来自PR(存在PR编号则为PR触发)。
    • << pipeline.git.pr.base_branch >> == 'main':限定PR的目标分支为main,只有满足该条件的PR才会执行构建。

扩展:针对多个特定分支

如果需要同时针对main和develop分支的PR触发构建,修改when条件即可:

when: << pipeline.git.pr.number >> != '' && (<< pipeline.git.pr.base_branch >> == 'main' || << pipeline.git.pr.base_branch >> == 'develop')

注意事项

  • 确保Circle CI项目已开启PR构建支持:在项目设置的「Advanced Settings」中,确认「Build for pull requests」选项处于开启状态。
  • 若使用Circle CI旧版本(version 2),可将管道参数替换为环境变量CIRCLE_PR_NUMBER和CIRCLE_BASE_BRANCH,逻辑保持一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 07:25:12