2026-07-27 15:05:46 +08:00
|
|
|
|
# 部署请求
|
2026-07-24 10:39:10 +08:00
|
|
|
|
|
2026-07-27 15:05:46 +08:00
|
|
|
|
本目录同时容纳两类严格区分的清单:
|
|
|
|
|
|
|
|
|
|
|
|
- `guanghu.architecture-provision-request/v1`:服务器上尚不存在的新架构单元首次进入现实层;
|
|
|
|
|
|
- `guanghu.existing-service-update-request/v1`:更新已经存在的 systemd 服务,必须先备份全部声明目标,重启后做回环健康检查,失败则恢复全部文件和旧单元。
|
|
|
|
|
|
|
|
|
|
|
|
不得用“首次部署”清单替代已有服务升级,也不得把升级失败降级为继续运行未验证的新文件。
|
2026-07-24 10:39:10 +08:00
|
|
|
|
|
|
|
|
|
|
固定流程:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
架构代码、systemd 单元、回滚与回环健康检查进入同一提交
|
|
|
|
|
|
→ 取得该提交的 40 位 SHA
|
|
|
|
|
|
→ 申请 provision-approved-architecture
|
|
|
|
|
|
→ resource = REQUEST-ID@COMMIT-SHA
|
|
|
|
|
|
→ 人类在可信当前对话签字,或通过邮件兜底核对请求与提交
|
|
|
|
|
|
→ 首装执行器读取不可变提交并验证清单
|
|
|
|
|
|
→ 备份旧单元、复制声明文件、安装单元、回环验收、写服务器私有回执
|
|
|
|
|
|
→ 任一步失败则恢复旧单元或撤掉本次新单元
|
|
|
|
|
|
→ 后续升级再登记 deploy/restart/health/rollback 动作
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
请求必须满足:
|
|
|
|
|
|
|
|
|
|
|
|
- `target_node` 是当前工单目标;
|
|
|
|
|
|
- `status` 是 `ARCHITECTURE_PACKAGE_READY · INITIAL_PROVISION_PENDING`;
|
|
|
|
|
|
- `initial_provision.kind` 是 `new-architecture-unit`;
|
|
|
|
|
|
- `source_paths` 只含仓库内相对普通文件;
|
|
|
|
|
|
- systemd 单元不得以 root 运行,必须包含 `NoNewPrivileges=true`、`ProtectSystem=strict` 和 `__RELEASE_ROOT__`;
|
|
|
|
|
|
- `module.run_user` 可以是每个人格体自己的独立低权限账户,不再固定为 `guanghu`;
|
|
|
|
|
|
- `module.environment_files` 只能声明 `/etc/guanghu/persona-secrets/` 下的密钥文件;
|
|
|
|
|
|
- `module.writable_paths` 只能声明 `/var/lib/guanghu/personas/<run_user>/` 下的状态目录;
|
|
|
|
|
|
- `runtime_check.url` 只能是 `127.0.0.1` 回环 HTTP 地址;
|
|
|
|
|
|
- 说明文字不参与执行。
|