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

GitHub Actions中如何通过Commit SHA获取关联Pull Request ID?

通过Commit SHA查找关联Pull Request的解决方案(GitHub Actions场景)

可行解决思路

1. 调用GitHub搜索API查询关联PR

利用GitHub搜索API,通过commit SHA筛选包含该提交的Pull Request,拿到PR编号后即可复用你已有的变更文件获取逻辑:

COMMIT_SHA="${{ github.sha }}"
SEARCH_URL="https://api.github.com/search/issues?q=type:pr+repo:${{ github.repository }}+sha:${COMMIT_SHA}"
# 获取第一个关联的PR编号
PR_NUMBER=$(curl -s -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" "$SEARCH_URL" | jq -r '.items[0].number')

# 复用你原来的逻辑获取变更文件
if [ -n "$PR_NUMBER" ]; then
  FILES=$(curl -s -X GET -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" "https://api.github.com/repos/${{ github.repository }}/pulls/$PR_NUMBER/files" | jq -r '.[] | .filename')
fi

2. 使用GitHub CLI(gh)快速查询

如果你的GitHub Actions Runner已预装GitHub CLI(新版默认自带),可以用更简洁的命令查询:

COMMIT_SHA="${{ github.sha }}"
# 获取第一个关联的PR编号
PR_NUMBER=$(gh pr list --repo "${{ github.repository }}" --search "sha:${COMMIT_SHA}" --json number --jq '.[0].number')

# 后续获取变更文件逻辑同上
if [ -n "$PR_NUMBER" ]; then
  FILES=$(curl -s -X GET -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" "https://api.github.com/repos/${{ github.repository }}/pulls/$PR_NUMBER/files" | jq -r '.[] | .filename')
fi

注意事项

  • 单个commit可能关联多个PR(如被 cherry-pick 到多分支),需根据业务场景选择处理第一个PR或遍历所有结果。
  • 确保GITHUB_TOKEN拥有仓库的读取权限(默认secrets.GITHUB_TOKEN在公共仓库已具备,私有仓库需按需配置)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 12:33:26