如何使用GitHub REST API通过标签创建者姓名或邮箱查询对应用户名
可行的REST API实现思路
最优方案:直接从CI运行环境获取触发者用户名
你的整个流程由Alpha仓库的CI触发,打标签的用户就是本次CI工作流的触发者,可直接从CI环境变量中读取用户名,完全跳过邮箱/姓名匹配环节:
- 如果使用GitHub Actions,直接读取内置环境变量
GITHUB_ACTOR,值就是触发打标签操作的GitHub用户名 - 如果使用其他CI系统,可通过Webhook payload的
sender.login字段直接获取触发标签创建事件的用户名
这个方案无需额外调用API,不存在匹配错误问题,完全覆盖你提到的用户多邮箱场景。
方案2:调用用户搜索接口匹配邮箱
如果无法从CI环境获取触发者信息,可调用GitHub REST API的用户搜索接口直接通过标签邮箱查询用户名:
GET /search/users?q=email:<你获取到的tagger邮箱>
接口返回结果的items[0].login字段即为匹配的GitHub用户名,注意需要你的GitHub App拥有用户邮箱读取权限,如果用户邮箱未公开,可给App申请组织级的用户信息读取权限解决。
方案3:遍历组织成员列表做匹配
如果搜索接口无匹配结果,可拉取组织全量成员列表做匹配:
- 调用
GET /orgs/<你的组织名>/members获取所有组织成员的用户名 - 逐个调用
GET /users/<成员用户名>获取成员的公开邮箱、姓名信息,和你拿到的tagger信息做匹配 - 匹配成功即可获取对应的用户名,可缓存成员列表降低API调用频率
该方案适合内部组织使用场景,成员范围固定,匹配准确率高。
内容的提问来源于stack exchange,提问作者Jed Godsey
相关产品推荐
相关产品推荐

