如何在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..."
关键逻辑说明
- 事件选择:
pull_request_review: submitted会在任何评审提交(批准、请求修改、评论)时触发,是唯一能捕捉评审状态变化的事件。 - 条件过滤:
- 先判断当前提交的评审是
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
相关产品推荐
相关产品推荐

