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

如何配置GitHub Action仅在pull request首次审批通过时触发

PR首次审批通过时触发GitHub Action的实现方案

现有配置仅判断了当前提交的审批为通过状态,没有统计该PR历史已通过的审批总数,所以每次有审批提交都会触发工作流。可以通过在工作流中增加审批数校验逻辑实现仅首次审批触发,不需要额外接入第三方服务,直接用GitHub自带的API和工作流内置权限即可完成。

修改后的完整工作流配置如下:

on:
  pull_request_review:
    types: [submitted]

jobs:
  approved:
    if: github.event.review.state == 'approved'
    runs-on: ubuntu-latest
    steps:
      - name: 校验是否为首次有效审批
        id: check_approval
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          PR_NUM: ${{ github.event.pull_request.number }}
          REPO: ${{ github.repository }}
          API_ROOT: ${{ github.api_url }}
        run: |
          # 拉取PR所有审批记录,按用户去重统计有效通过数
          APPROVAL_COUNT=$(curl -s -H "Authorization: token $GITHUB_TOKEN" \
            "$API_ROOT/repos/$REPO/pulls/$PR_NUM/reviews" \
            | jq '[.[] | select(.state == "APPROVED") | .user.login] | unique | length')
          
          # 仅当有效通过数为1(即当前提交的是首次审批)时,标记允许运行后续步骤
          if [ "$APPROVAL_COUNT" -eq 1 ]; then
            echo "is_first=yes" >> $GITHUB_OUTPUT
          else
            echo "is_first=no" >> $GITHUB_OUTPUT
          fi

      - name: 原有业务逻辑
        if: steps.check_approval.outputs.is_first == 'yes'
        run: echo "This PR was approved"

配置说明:

  • 工作流使用自动生成的GITHUB_TOKEN调用接口,无需手动配置密钥,默认权限即可满足PR信息读取需求
  • 审批统计逻辑做了用户维度去重,同一用户多次提交审批仅算一次有效通过,避免重复提交、撤销重提审批导致的误触发
  • 接口地址通过github.api_url自动适配,同时支持GitHub公有云、GitHub Enterprise Server各类部署环境
  • 若需要排除特定账号(如PR作者、机器人账号)的审批,可在jq筛选规则中增加对应登录名的判断条件即可
  • 后续如果调整PR合并要求的最少审批数,该配置无需修改,始终会在PR收到第一个有效审批时运行后续任务

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 16:01:02