GitHub 仓库选择菜单:安装仓库列表 + PATCH 补仓库 + 控制台下拉

This commit is contained in:
host committed 2026-10-27 05:43:56 +08:00
1 parent 5ba4d35839
commit 6ba671e051
4 files changed
+343

No files matched your search

+30
View File
@@ -871,6 +871,36 @@ interrupted 且终态任务 cancel 返回 400、心跳后 sweep 不扫刚心跳
`/tasks`、`/projects`、`/workers`、`/health` 同款,否则页面能打开
但环境区永远加载失败)。
## GitHub 仓库选择(建项目 / 给已有项目补仓库)
控制台以前没有仓库选择菜单:建项目时 repo_url 只是个可选的
手填文本框,不填也能建出项目,之后建环境必被 400 挡住
(“project has no repo_url”),且没有修改接口,死结只能重建
项目。本节补上选择菜单与补仓库接口。
- 列表来源:`GET /github/repos`(需认证)列出本服务 GitHub
App 安装记录里的仓库(installation_repositories 事件同步进
`github_app_installations` 表,字段 installation_id /
account_login / repo_full_name,clone_url 由 full_name 拼出
`https://github.com/<full_name>.git`)。只含仓库名,不含密钥。
- 建项目:仓库下拉(从上述接口加载)+ 手填文本框并存:选下拉
即把 clone_url 填进文本框,仍按原有 body 提交;没进 App 安装
的公开仓库继续手动填 URL,不受影响。
- 补仓库:`PATCH /projects/{id}`(项目 owner 才能调, maintainer
也不行——改项目归属配置按 manage_project 计),body 必须含
repo_url:字符串走与创建时同一套 validate_repo_url 校验(带凭
证的 URL 拒绝),null 或空串表示清空。改完记 update_project
审计。环境区在当前项目无仓库时直接亮出同一下拉 + “保存仓库”
按钮,保存后立即可以建环境(截图里的死结就卡在这里)。
- 快照语义不变:补仓库只改 projects 行,已建环境的 repo_url
快照不动(仍用建环境时的仓库),新环境才用新值。
- 信任模型说明(诚实边界):下拉没有放宽任何权限——手填 URL
本来就能填任意地址,选下拉与手填是同一能力;按用户隔离仓库
可见范围(例如只列该用户 GitHub 身份名下的安装仓库)是后续
工作,本轮不做。公网部署时 nginx 须同批加
`location ^~ /github/repos`(`/projects` 已有 location,PATCH
走它,不用重复加)。
## 租户配额与计费
- 口径:配额是按用户、按 UTC 自然月的 USD 上限(`user_quotas`