Release Group servers 为空
创建 Release Group 时未填入
servers子表。create_deploy()从 servers 获取部署目标列表,为空则静默返回 None,不触发任何错误提示。
1. 归属
| 问题 | 答案 |
|---|---|
| 属于哪个仓库? | frappe/press 源码逻辑 |
| 在容器内路径? | press/press/deploy_candidate_build.py 的 create_deploy() 方法 |
| 在构建链的哪一步? | Release Group → Deploy Candidate → Build → Deploy 链路的 Deploy 触发环节 |
2. 功能解释
Release Group 的 servers 字段干什么?
servers 是一个 Table 类型子表(Release Group Server),记录”这个 Release Group 的 Bench 应该部署到哪几台机器”。
create_deploy() 的逻辑?
def create_deploy(self):
servers = self.servers # 子表
if not servers:
return None # 空 → 什么都不做,不报错
# ... 创建 Deploy 记录3. 为什么会出现这个问题
第一次创建 Release Group bench-0001 时,只填了 version、team、apps,漏了 servers。创建时不报错,后续 Deploy 静默失败。
官方 Frappe Cloud 的 UI 强制选 Server,不会漏。
4. 补丁/修改做了什么
绕过 create_deploy(),直接调 rg.deploy_on_server("f1.getgrowth.app")。
5. 性质判断
操作遗漏,非 hack。填漏了字段。绕过方法是 workaround。
6. 正确做法
创建 Release Group 时直接填 servers:"servers": [{"server": "f-B.solar-flow.ai"}]。
7. 影响范围
- Deploy 流程完全阻断
- 不报错,不容易发现