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
相关产品推荐
相关产品推荐

