首页 > 解决方案 > 从分叉存储库中发布来自 GitHub 操作的评论的解决方法

问题描述

我需要在 GitHub 操作完成后向 GitHub 拉取请求发布评论,例如当 FOSS 社区成员提交 PR 时。我知道当一个操作从一个分叉的仓库运行时,令牌对父仓库没有写权限,所以它不能发表评论。

人们为此找到了任何可行的解决方法吗?

标签: githubgithub-apigithub-actions

解决方案


我找不到任何现成的操作,所以这里有一个完整的代码来解决 GitHub Actions 的限制,用 bash + jq + curl 编写,并直接调用 GitHub API。

  • 拉取请求操作 会创建一个.md包含 Github 降价评论内容的文件,并将其保存为某个名称下的工件。此操作在分叉存储库的上下文中运行,因此无法发布 PR 评论。
  • 常规cron 作业会查看所有打开的拉取请求和最近完成的操作运行,查找已发布的工件,并将其内容作为评论复制到相应的拉取请求,更新重复运行的现有评论。

cron 的工作深入步骤是:

  • 获取所有打开的拉取请求
  • 获取所有最近的工作流程运行
  • 将拉取请求及其当前 SHA 与为同一 SHA 运行的最后一个工作流匹配
  • <pull-request-number> 对于和 的每个找到的匹配项 <workflow-run-id>
    • 从工作流运行下载工件——需要一个带有降价内容的文件
    • 查看现有的 PR 评论,看看我们之前是否发表过评论(使用隐藏的神奇标题来识别我们的评论)
    • 使用新文本创建或更新评论(如果更改)

推荐阅读