GitHub Actions合并PR后如何找到对应PR并进行评论
解决方案
有可行的方法可以获取到合并提交对应的原PR信息,常用的有两种实现方案:
方法1:从合并提交信息直接提取PR号(无需调用API,实现最简单)
绝大多数GitHub仓库默认的合并提交、Squash合并提交信息末尾,都会自动携带(#<PR编号>)的格式后缀,你可以直接在Action中通过正则提取到PR编号,无需调用额外接口。
对应配置示例:
- name: 提取关联PR编号 id: get_pr run: | # 获取当前触发Action的合并提交的提交信息 COMMIT_MSG=$(git log -1 --pretty=%B ${{ github.sha }}) # 提取提交信息末尾的PR编号 PR_NUMBER=$(echo "$COMMIT_MSG" | grep -oE '#[0-9]+' | tail -n1 | tr -d '#') echo "pr_number=$PR_NUMBER" >> $GITHUB_OUTPUT
提取到PR编号后,就可以在检查不通过时给对应PR发布评论:
- name: 给合并PR发布检查失败评论 # 替换为你自己的检查未通过判断条件 if: ${{ failure() }} uses: actions/github-script@v7 with: script: | github.rest.issues.createComment({ owner: context.repo.owner, repo: context.repo.repo, issue_number: ${{ steps.get_pr.outputs.pr_number }}, body: '本次PR合并后,main分支相关检查未通过,请排查变更内容' }) env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
方法2:通过提交SHA调用GitHub API查询PR(兼容性更强)
如果你自定义了合并提交的信息格式,没有默认的PR编号后缀,可以直接用当前合并提交的SHA查询关联的PR信息,这种方案兼容性更强,还能获取PR标题、提交作者等完整信息。
对应配置示例:
- name: 查询关联PR全量信息 id: get_pr uses: actions/github-script@v7 with: script: | const pulls = await github.rest.repos.listPullRequestsAssociatedWithCommit({ owner: context.repo.owner, repo: context.repo.repo, commit_sha: context.sha }) if (pulls.data.length > 0) { const pr = pulls.data[0] // 输出你需要的PR字段供后续步骤使用 core.setOutput('pr_number', pr.number) core.setOutput('pr_title', pr.title) core.setOutput('pr_author', pr.user.login) } env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
后续发布评论的步骤和方法1完全一致,直接使用输出的pr_number参数即可。
注意事项
- 以上两种方案仅针对PR合并产生的提交生效,如果是用户直接推送代码到main分支的提交,关联PR查询结果为空,你可以自行添加判断逻辑跳过这类场景。
- 配置中用到的
secrets.GITHUB_TOKEN是GitHub Action默认提供的令牌,默认具备PR信息查询、评论发布权限,无需额外配置,除非你自行修改了Action的默认权限规则。
内容的提问来源于stack exchange,提问作者onkami
相关产品推荐
相关产品推荐

