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

如何通过GitHub Actions/Workflows获取Pull Request的审批者用户名?

在GitHub Action中提取PR已审批者用户名

GitHub原生上下文里没有直接给出已审批者的集合,你需要通过处理PR的评审记录来筛选出已审批的用户,以下是实现步骤:

1. 提取已审批者的工作流Step

在你的GitHub Action工作流中添加一个Step,用jq解析PR的评审记录,筛选出状态为APPROVED的用户并输出:

- name: 获取PR已审批者
  id: extract_approvers
  run: |
    # 将PR评审记录转为JSON,用jq筛选已审批用户的登录名
    APPROVER_LIST=$(echo '${{ toJSON(github.event.pull_request.reviews) }}' | jq -r '.[] | select(.state == "APPROVED") | .user.login')
    # 将换行分隔的用户名转为逗号分隔的字符串(可选,根据你的脚本需求调整格式)
    APPROVERS=$(echo "$APPROVER_LIST" | tr '\n' ',' | sed 's/,$//')
    # 将结果输出为Action变量,供后续Step使用
    echo "APPROVERS=$APPROVERS" >> "$GITHUB_OUTPUT"

2. 在后续Step中使用已审批者变量

之后的Step可以通过${{ steps.extract_approvers.outputs.APPROVERS }}获取已审批者的用户名(逗号分隔格式),传入你的自定义脚本:

- name: 执行自定义脚本
  run: |
    # 将审批者变量传入脚本,示例:打印审批者
    echo "已审批PR的用户:${{ steps.extract_approvers.outputs.APPROVERS }}"
    # 或者传入你的脚本文件
    ./your-custom-script.sh --approvers "${{ steps.extract_approvers.outputs.APPROVERS }}"

关键说明

  • github.event.pull_request.reviews包含PR的所有评审历史记录,每条记录包含评审状态(state)和评审用户信息
  • 如果你需要保留换行分隔的格式,去掉tr和sed的处理步骤即可
  • 若PR暂无审批者,APPROVERS变量会是空字符串,你的脚本需要处理这种边界情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 00:45:16