Github 应用程序 - 无法访问分叉?

问题描述

TLDR

组织 Github App 不能为存储库的外部分支创建 check runscheck suitesstatus checks。使 Checks Api 对外部拉取请求无用。

说明

我已经为 CI-CD 管道设置了一个用 go 编写的组织 Github 应用程序(不是 OAuth)。 Github 应用程序使用安装令牌向 github 进行身份验证。 它对组织拥有完全权限

该应用主要侦听 check_runcheck_suite 事件,并触发 cicd 管道。

当应用收到 check_suite event= 时,它可以成功创建/更新与该 check_runs 相关的 check_suite。仅当提交直接提交到组织存储库时才会触发这些事件。

不过,当用户从分支创建拉取请求时,Github 应用程序无权为该外部存储库创建检查运行。这意味着 check_run / check_suite 事件不会在从 fork 打开 PR 时触发。

这就是为什么我也监听 pull_request 事件。应用程序成功接收它们 (pull_request.opened/pull_request.synchronize)。此处的目标是为该拉取请求的最新提交创建一个 check_run

当收到 pull_request.opened 事件时,应用程序会向 GitHub 发出请求,以在外部分支上为拉取请求的最新提交创建 check_run。结果是 404 错误(因为应用程序没有权限(为什么?))。 如果我尝试使用 personal access token,我可以在该外部存储库上创建一个 check_run

这令人惊讶,因为 checks/status api 似乎完全适用于这种情况(外部运行 ci-cd 进程)。但是,如果应用程序无法访问分叉(因为有很多开发人员在使用外部分叉等),那么它就无法达到目的了。

我的组织 Github App 如何能够在该组织的外部复刻提交上创建 check_runcheck_suitestatus_checks

链接:

https://github.community/t/github-app-check-run-pr-from-fork/13875/2

https://github.community/t/no-check-suite-event-for-foreign-pull-reuqests/13915

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)