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

GitHub如何配置指定分支推送后自动创建PR并测试通过自动合并

定向dev→staging自动合并的GitHub Actions原生实现方案

完全基于GitHub原生生态实现,无需依赖Teamcity等第三方CI工具,自动合并能力仅对dev到staging的单条分支流转生效,不会开启仓库全局自动合并。

前置仓库配置

先完成基础权限配置,保证Workflow有足够的执行权限:

  • 进入仓库Settings > Actions > General页面,找到Workflow permissions项,选择Read and write permissions,同时勾选Allow GitHub Actions to create and approve pull requests,保存设置
  • 给staging分支配置分支保护规则,将你预设的测试流程设为必填合并检查,不要开启仓库全局自动合并开关,所有合并操作仅通过Workflow触发

完整Workflow代码

在仓库.github/workflows/目录下新建auto-dev-to-staging.yml文件,内容如下:

name: Auto Merge dev to staging
on:
  push:
    branches: [ dev ]
  workflow_dispatch: # 支持手动触发,满足手动创建PR的需求

permissions:
  contents: write
  pull-requests: write
  checks: read

jobs:
  auto-sync:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Create dev to staging PR if not exists
        id: create-pr
        uses: peter-evans/create-pull-request@v6
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          branch: dev
          base: staging
          title: "[Auto Sync] Merge dev changes to staging"
          body: |
            This PR is automatically created by GitHub Actions, syncing latest changes from dev to staging.
            All required tests will run automatically, PR will be merged once all checks pass.
          labels: |
            auto-sync
          delete-branch: false
          # 仅对当前创建的PR单独开启自动合并,完全不影响仓库全局自动合并设置
          auto-merge: true
          auto-merge-method: merge # 可按需替换为squash/rebase

      - name: Print PR info
        if: steps.create-pr.outputs.pull-request-operation == 'created'
        run: echo "Successfully created PR #${{ steps.create-pr.outputs.pull-request-number }}"

执行流程说明

配置完成后会完全匹配预期流转逻辑:

  • 开发人员将feature分支合入dev分支后,push事件会自动触发该Workflow
  • Workflow首先会检查当前是否已存在从dev指向staging的未合并PR,如果已存在就会直接更新PR内容,不会重复创建
  • PR创建/更新后会自动触发仓库内已配置的所有预设测试流程,和人工创建PR的触发逻辑完全一致
  • 方案中的自动合并是针对单个PR的独立设置,不会修改仓库全局的自动合并开关,所有其他分支组合、人工创建的PR都不会被自动合并,完全满足定向生效的要求。当staging分支保护要求的所有必填测试用例全部通过后,GitHub会自动完成PR合并,全程不需要人工介入
  • 如果测试执行失败,PR会保持打开状态,开发人员可以查看测试日志修复问题,修复后的代码推送到dev分支后会自动同步到该PR,重新触发测试
  • 需要手动触发PR创建时,直接进入仓库Actions页面,选择对应Workflow点击Run workflow即可,后续测试、自动合并逻辑和自动触发完全一致

可选自定义调整

你可以根据自己的项目需求修改配置:

  • 调整合并方式:修改auto-merge-method参数,可选merge(保留全部分支合并提交记录)、squash(将所有提交压缩为单个提交合并)、rebase(变基合并)
  • 自定义PR规则:可以修改PR标题、正文内容,增加专属标签、指定评审人等
  • 增加通知节点:可以在Workflow末尾新增步骤,在合并成功、测试失败等节点推送通知到内部协作工具
  • 调整触发条件:如果不需要每次推dev都触发,可以修改push触发规则,比如仅当dev分支有特定标签、特定路径变更时触发

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 16:33:40