如何通过自动化流程关联不同仓库中的PR?
问题描述
我有两个仓库A和B,已在仓库A的PR上配置了GitHub Action:它会触发仓库B中的工作流,创建一个与A的变更相关的PR。我希望将这两个PR关联起来,让发起A中PR的人能自动找到B中对应的PR(比如通过链接)。
已尝试方案
- 通过工作流传递
A的PR编号,自动在B的PR中发布格式为<org>/<repo>#<PR-number>的链接评论,同时变更的提交信息和PR描述中也包含该链接,使用的工具是add-pr-comment。但问题是,这种自动评论不会在A的PR中生成“此PR在此处被提及”的提示,和用户手动评论的效果不一样。
需求总结
A中的PR会生成B中的PR,希望A的相关人员能看到对应的B中PR,不管是通过A中的评论,还是B中的评论在A中生成引用都可以。- 尝试过通过
B的评论触发A的引用但未成功,推测和自动评论与用户评论的差异有关。
可行实现方法
方法1:直接在仓库A的PR中添加B的PR链接评论
既然在B的PR中添加A的链接无法触发提及提示,反过来操作:当B的PR创建完成后,通过GitHub Action向A的对应PR发送一条包含B的PR链接的评论,让A的PR相关人员直接看到关联的B仓库PR。
具体操作步骤:
- 在仓库B的工作流中,成功创建PR后,获取B的PR编号并保存为环境变量。
- 使用跨仓库权限的GitHub Token(比如Personal Access Token,需要同时拥有A、B仓库的评论权限),调用评论工具向A的目标PR发送评论。
示例代码片段:- name: 评论关联的B仓库PR到A的PR uses: mshick/add-pr-comment@v2 with: repo-token: ${{ secrets.CROSS_REPO_PAT }} repo: <你的组织>/A number: ${{ env.A_PR_NUMBER }} # 从A的工作流传递过来的PR编号 message: | 对应的B仓库PR:<你的组织>/B#${{ env.B_PR_NUMBER }}
方法2:修正B仓库PR的引用规则,触发A仓库的提及提示
GitHub的PR提及提示需要满足几个关键条件,之前的自动评论未生效可能是这些条件没达标:
- 权限足够:自动评论使用的Token对应的账号必须拥有仓库A的读取权限(默认的
GITHUB_TOKEN跨仓库权限不足,建议用PAT)。 - 引用格式正确:将A的PR引用放在普通文本中,不要放在代码块里,比如直接写
对应的A仓库PR:<你的组织>/A#123,而非用```包裹。 - 扫描范围覆盖:除了评论,还可以在B的PR描述(body)中加入A的PR引用,GitHub会扫描PR描述内容,满足条件后会在A的PR中生成提及提示。
方法3:利用GitHub API手动触发提及
如果上述方法仍不生效,可以直接调用GitHub的Issues API,在A的PR中创建一条评论,或者在B的PR中创建评论后,通过API触发GitHub的引用扫描。不过这种方法相对复杂,一般前两种方法就能解决问题。
内容的提问来源于stack exchange,提问作者miguel
相关产品推荐
相关产品推荐

