feat: add release identity manifest

This commit is contained in:
2026-09-20 21:18:09 +08:00
parent 014591560a
commit cebb32138c
8 changed files with 182 additions and 4 deletions

View File

@@ -1,3 +1,40 @@
# 发布物身份清单
`orbit-admin release manifest` 不连接数据库,输出当前二进制内置的构建身份、协议版本和完整迁移名称/校验和。它用于在构建阶段冻结发布证据;输出不含 DSN、凭据、迁移 SQL 或业务数据。
```sh
docker run --rm --entrypoint /usr/local/bin/orbit-admin registry.example/orbit:1.0.0 release manifest > orbit-release-manifest.json
# 本地工作区也可执行:
make release-manifest > orbit-release-manifest.json
```
清单中的 `build.revision` 应与源码提交和镜像 OCI revision 标签一致,`schema` 应与部署前 `orbit-admin verify` 返回的迁移账本逐项一致。清单只证明发布物声明的身份,不能证明目标数据库已切换、备份可恢复或目标拓扑满足 RPO/RTO。
示例结构:
```json
{
"manifest_version": 1,
"build": {
"version": "1.0.0",
"revision": "<immutable-commit>",
"built_at": "2026-09-20T00:00:00Z",
"go_version": "go1.27.1",
"http_protocol_version": "1",
"worker_protocol_version": "1",
"event_protocol_version": "1",
"workflow_schema_version": 1
},
"schema": {
"current_version": 28,
"migration_count": 28,
"migrations": [
{"version": 1, "name": "000001_initial.up.sql", "checksum": "<sha256>"}
]
}
}
```
# 发布前结构核验
`orbit-admin verify` 是只读的发布、迁移和恢复前置检查。它不会执行迁移、修复脏账本、删除数据或修改权限;数据库账户通过 `ORBIT_MYSQL_DSN` 注入,建议使用受限只读账户。