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

如何在PR获得指定数量审批后触发GitHub Action运行?

在PR获得两位评审批准时触发GitHub Action测试

GitHub 没有直接提供“当PR达到指定数量审批时触发”的原生事件,但可以通过 pull_request_review: submitted 事件结合条件判断实现需求,你之前的问题大概率是缺少了对批准数量的校验逻辑。

实现方案

使用 pull_request_review: submitted 事件监听评审提交动作,再通过 GitHub 上下文变量判断当前PR的有效批准数量是否达到2。

示例 Workflow 配置

name: Run Tests After 2 Approvals
on:
  pull_request_review:
    types: [submitted]

jobs:
  execute-tests:
    runs-on: ubuntu-latest
    # 条件判断:当前评审为批准状态,且PR累计获得至少2个有效批准
    if: |
      github.event.review.state == 'approved' &&
      github.event.pull_request.reviews | map(attribute='state') | select('==', 'approved') | length >= 2
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
      
      - name: Run test suite
        run: |
          # 替换为你的实际测试命令,例如:
          # npm install && npm test
          # pip install -r requirements.txt && pytest
          echo "Executing test suite after 2 approvals..."

关键逻辑说明

  1. 事件选择:pull_request_review: submitted 会在任何评审提交(批准、请求修改、评论)时触发,是唯一能捕捉评审状态变化的事件。
  2. 条件过滤:
    • 先判断当前提交的评审是 approved 状态,避免非批准操作触发流程;
    • 通过 github.event.pull_request.reviews 获取该PR的所有评审记录,筛选出状态为 approved 的条目并统计数量,确保达到2个及以上。

进阶优化(避免重复评审计数)

如果需要排除同一评审人多次批准的情况,可增加去重逻辑,统计独特评审人的数量:

if: |
  github.event.review.state == 'approved' &&
  (github.event.pull_request.reviews | select(attribute='state', '==', 'approved') | map(attribute='user.id') | unique | length) >= 2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 03:22:41