feat(ql3): close cluster alpha milestone

This commit is contained in:
whyour
2026-08-28 00:25:04 +08:00
parent a7308c78f9
commit 07d1dd97c1
13 changed files with 2080 additions and 50 deletions
+6 -4
View File
@@ -11,7 +11,7 @@
| Cluster Integration Candidate | amd64/arm64 集群测试节点 | OS 漏洞策略、SBOM 与镜像库存复核、non-root identityAdmin 额外通过产品 facade smoke | 导入隔离 registry/测试节点,进行多组件集成;不作为 production HA release |
| Public Release Set | 生产用户 | 受保护 tag、六镜像 multi-arch digestLocal Application/operator + Cluster 四角色)、签名/attestation、私有发布证据、catalog、Local/Cluster 部署与回退闭环 | 尚未实际发布;只能由受保护 release workflow 生成 |
只有 `Local Alpha Trial Kit` 可以称为本阶段用户可试运行产物。单个 headless runtime Cluster archive 都只是工程候选;后者还不满足正式 Kubernetes deployment-lock 的 GHCR immutable digest 与 catalog provenance。
`Local Alpha Trial Kit + Local milestone index`本阶段用户可试运行产物`Cluster Integration Candidate + Cluster milestone index` 是集群部署者可下载、可离线验真的集成产物。单个 headless runtime、单个 Cluster archive 或没有 milestone index 的部分矩阵产物都只是工程中间件。Cluster milestone 仍不满足正式 Kubernetes deployment-lock 的 GHCR immutable digest 与 catalog provenance。
## 当前阶段实物(2026-08-27
@@ -28,12 +28,14 @@ ADR-0506 现要求 `qinglong/alpha-local-trial-kit@v2` 额外包含 `verificatio
## 生成
在 GitHub Actions 手动运行 `QingLong 3.0 CI`,选择目标 `next` 提交设置 `produce_alpha_artifacts=true`。普通 push/PR 不上传大镜像,避免每次开发提交都制造伪里程碑和额外存储成本。
在 GitHub Actions 手动运行 `QingLong 3.0 CI`,选择目标 `next` 提交设置 `produce_alpha_artifacts=true`,并明确选择 `alpha_artifact_scope=local|cluster|all`。普通 push/PR 不上传大镜像,避免每次开发提交都制造伪里程碑和额外存储成本。
成功后同一次 run 生成、保留 30 天:
- `ql3-alpha-<commit>-local-amd64``ql3-alpha-<commit>-local-arm64`
- `ql3-alpha-<commit>-local-milestone`
- `ql3-alpha-<commit>-control-<arch>``control-ai-<arch>``admin-<arch>``worker-<arch>`
- `ql3-alpha-<commit>-cluster-milestone`
Local artifact 含:
@@ -43,7 +45,7 @@ Local artifact 含:
- 与实际只读镜像 inventory 对账过的 CycloneDX SBOM
- 面向 Local 用户的 README 与覆盖全部内容文件的 `SHA256SUMS`
Cluster artifact 是每角色一个 native Docker archive 和各自 manifest
Cluster artifact 是每角色/架构一个六文件闭包:native Docker archive、精确 CycloneDX SBOM、workflow-bound verification evidence、README、`qinglong/alpha-cluster-image@v1` manifest 和覆盖全部内容文件的 `SHA256SUMS`。完整 CI 成功后,八个 bundle 由 `qinglong/alpha-cluster-milestone@v1` 小型索引闭合;索引本身不重复存放大 archive
任何 required job 失败时不上传对应产物。artifact 名和 archive 内的 `ci-*` tag 都表示 commit-bound candidate,不能改名后冒充 `v3.x` release。
@@ -82,4 +84,4 @@ Cluster candidate 必须先导入隔离 registry 并重新绑定该 registry 的
## 里程碑判定
一次用户阶段里程碑只有同时记录以下事实才成立:源码 commit、版本、两种 Tier-1 架构的 Application/operator、完整 CI run、artifact 名与 digest、fresh setup→首 Owner→active→stop 的目标 Profile smoke、已知限制和回退路径。仅有源码、`dist/`、单元测试数字、Dockerfile、单个 headless runtime 或“理论上可构建”都不算用户可用产物。
一次 Local 用户阶段里程碑只有同时记录以下事实才成立:源码 commit、版本、两种 Tier-1 架构的 Application/operator、完整 CI run、artifact 名与 digest、fresh setup→首 Owner→active→stop 的目标 Profile smoke、已知限制和回退路径。一次 Cluster 集成里程碑还必须精确闭合四角色乘两架构、同一 run/attempt 和八个独立主体。仅有源码、`dist/`、单元测试数字、Dockerfile、单个 headless runtime 或“理论上可构建”都不算阶段可用产物。
@@ -0,0 +1,43 @@
# QingLong 3.0 Cluster Alpha Integration Milestone
本目录是一次完整 Cluster Alpha integration milestone 的闭合索引,不包含八个大体积 Docker archive。`manifest.json` 精确列出同一次 GitHub Actions run 生成并离线复核的 control、control-ai、admin、worker 在 amd64、arm64 上的八个 artifact。只有该索引和目标 artifact 同时存在,才可把这次运行称为阶段性 Cluster 集成产物。
## 成熟度边界
- `maturity` 固定为 `cluster_integration_candidate_not_public_release`
- 适用于隔离 registry、临时 Kubernetes/K3s 节点和非生产数据库上的集成验证;
- 不提供公开 GHCR tag、不可变 catalog selection、Cosign 签名、GitHub attestation、生产 HA、升级或长期支持承诺;
- 低配路由器/NAS 应选择 Local Alpha Trial Kit,不能部署四个 Cluster 角色。
任何单角色或单架构 artifact 提前上传都只是中间文件。缺少 `ql3-alpha-<sourceRevision>-cluster-milestone`、完整 CI 未成功、run/attempt 不一致或索引审计失败时,不得作为阶段交付物。
## 选择并验证下载物
1. 在本目录执行 `sha256sum --check SHA256SUMS`
2. 确认 `manifest.json`
- schema 为 `qinglong/alpha-cluster-milestone@v1`
- `sourceRevision` 为目标完整 40 位提交;
- workflow event/job 为 `workflow_dispatch` / `cluster-alpha-milestone`
- 对应 run ID/attempt 的完整 `QingLong 3.0 CI` 成功;
- `artifacts` 恰好包含四角色乘两架构的八项。
3. 按节点架构和需要的角色下载 artifact;一个可运行的完整 Cluster 测试部署通常需要 control、admin、worker,启用 AI 才增加 control-ai。
4. 对每个 bundle 执行其 `SHA256SUMS`,并核对 bundle `manifest.json` 的 digest 等于 milestone `bundleManifest.sha256`
5. 使用隔离 registry 导入 Docker archive,再以导入后的 immutable digest 更新测试 deployment lock;不要直接依赖 archive 内的 `ci-*` tag。
持有同版本源码与 Node.js 24 时可离线复审:
```sh
node scripts/ql3-cluster-alpha-milestone.cjs \
--mode=audit \
--milestone=/absolute/path/to/ql3-alpha-cluster-milestone
node scripts/ql3-cluster-alpha-bundle.cjs \
--mode=offline-audit \
--bundle=/absolute/path/to/one-cluster-bundle
```
这两个命令不访问 Docker 或网络;它们验证闭合文件集、长度、SHA-256、SBOM identity、workflow evidence、角色/架构集合和八个主体互不复用。它们不会重新执行漏洞扫描或 Kubernetes live gate。
## 部署与回退
Cluster candidate 只应进入临时命名空间、隔离 registry 和可删除数据库。回退方式是删除测试 workload 与测试数据、撤销临时 credential,并回到原 deployment lock。生产 CloudNativePG、跨主机 STONITH/DR、CSI custody、外部 ingress TLS/IdP 和正式升级仍必须由 Public Release Set 的 catalog-bound deployment ceremony 证明。