guanghu-ice-heart/deployment/requests/README.md

35 lines
1.8 KiB
Markdown
Raw Permalink Normal View History

# 部署请求
本目录同时容纳两类严格区分的清单:
- `guanghu.architecture-provision-request/v1`:服务器上尚不存在的新架构单元首次进入现实层;
- `guanghu.existing-service-update-request/v1`:更新已经存在的 systemd 服务,必须先备份全部声明目标,重启后做回环健康检查,失败则恢复全部文件和旧单元。
不得用“首次部署”清单替代已有服务升级,也不得把升级失败降级为继续运行未验证的新文件。
固定流程:
```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 地址;
- 说明文字不参与执行。