问题描述
TLDR
组织 Github App
不能为存储库的外部分支创建 check runs
、check suites
或 status checks
。使 Checks Api
对外部拉取请求无用。
说明
我已经为 CI-CD 管道设置了一个用 go
编写的组织 Github 应用程序(不是 OAuth)。 Github 应用程序使用安装令牌向 github 进行身份验证。 它对组织拥有完全权限。
该应用主要侦听 check_run
和 check_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_run
、check_suite
或 status_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 (将#修改为@)