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

如何在GitHub Actions中指定PR的源-目标分支组合触发工作流?

实现特定source-target分支组合触发GitHub Actions工作流

GitHub Actions的pull_request触发器本身不支持直接指定源分支与目标分支的组合,但可以通过job级别的条件判断实现这个需求,精准控制仅当PR满足dev→main的分支组合时,才执行预生产检查工作流。

方案一:先限定目标分支,再判断源分支

这种方式先通过触发器限定目标分支为main,减少不必要的工作流初始化,再在job中判断源分支是否为dev:

name: 预生产检查工作流
on:
  pull_request:
    types: [opened, synchronize, reopened]
    branches: [main] # 仅目标分支为main的PR会触发工作流初始化

jobs:
  pre-production-check:
    runs-on: ubuntu-latest
    # 仅当源分支为dev时,才执行该job
    if: github.event.pull_request.head.ref == 'dev'
    steps:
      - name: 检出代码
        uses: actions/checkout@v4
      - name: 执行预生产检查
        run: |
          echo "执行dev→main分支组合的预生产检查"
          # 替换为你的实际检查命令(如构建、测试、合规扫描等)

方案二:直接判断分支组合

如果需要更灵活的分支组合判断,可以去掉触发器的branches限制,直接在job的条件中同时校验源分支和目标分支:

name: 预生产检查工作流
on:
  pull_request:
    types: [opened, synchronize, reopened]

jobs:
  pre-production-check:
    runs-on: ubuntu-latest
    # 同时校验目标分支为main、源分支为dev
    if: github.event.pull_request.base.ref == 'main' && github.event.pull_request.head.ref == 'dev'
    steps:
      - name: 检出代码
        uses: actions/checkout@v4
      - name: 执行预生产检查
        run: |
          echo "执行dev→main分支组合的预生产检查"
          # 替换为你的实际检查命令

原理说明

GitHub Actions提供的github.event.pull_request对象包含了PR的完整信息:

  • base.ref:PR的目标分支名称
  • head.ref:PR的源分支名称

通过在job级别添加if条件,就能精准过滤出符合要求的分支组合,既满足你的预生产检查需求,又不会限制其他分支的正常流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 19:49:59