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

如何在GitHub Actions中获取PR所有者的邮箱地址?

解决GitHub Action中PR所有者邮箱为空的问题

问题根源

  1. 上下文路径错误:你之前写的github.event.pull_request.owner.email指向的是仓库所有者的邮箱,并非PR发起者;github.event.pull_request.pull_request.user.email多嵌套了一层pull_request,正确路径应为github.event.pull_request.user.email。
  2. 隐私限制:即使路径正确,GitHub默认不会在事件Payload中返回用户的私有邮箱——只有当用户在GitHub个人设置中把邮箱设为公开时,user.email字段才会有值。

可行解决方案

方案1:依赖用户设置公开邮箱(简单但不可控)

让PR发起者在GitHub个人设置的「Emails」页面,取消勾选「Keep my email addresses private」选项,将邮箱设为公开。之后${{ github.event.pull_request.user.email }}就能正常获取到值。

方案2:通过GitHub API获取邮箱(可靠,无需用户修改设置)

使用GitHub API调取PR作者的邮箱信息,需借助GITHUB_TOKEN授权,示例代码如下:

jobs:
  run-custom-action:
    runs-on: ubuntu-latest
    steps:
      # 调用GitHub API获取用户邮箱
      - name: Fetch PR author email
        id: fetch-email
        uses: octokit/request-action@v2.x
        with:
          route: GET /users/${{ github.event.pull_request.user.login }}
          headers: '{"Accept": "application/vnd.github.v3+json"}'
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

      # 执行你的自定义Action
      - name: Run custom action
        uses: your/your-custom-action@v1
        with:
          user-email: ${{ fromJSON(steps.fetch-email.outputs.data).email }}

注意:如果用户所有邮箱均设为私有,API仍会返回空值,但这种情况极少发生。

方案3:使用提交记录中的邮箱(备选)

如果不需要严格匹配PR所有者的GitHub账号邮箱,可直接取PR分支最后一次提交的作者邮箱,路径为:

with:
  user-email: "${{ github.event.pull_request.head.commit.author.email }}"

该值不受GitHub隐私设置影响,但可能与PR所有者的账号邮箱不一致(比如用户提交代码时用了本地配置的其他邮箱)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 15:12:44