Release Group servers 为空

创建 Release Group 时未填入 servers 子表。create_deploy() 从 servers 获取部署目标列表,为空则静默返回 None,不触发任何错误提示。


1. 归属

问题答案
属于哪个仓库?frappe/press 源码逻辑
在容器内路径?press/press/deploy_candidate_build.pycreate_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 流程完全阻断
  • 不报错,不容易发现