Files
story/docs/remote-ci-supply-chain-evidence.md
T

48 lines
2.7 KiB
Markdown
Raw Normal View History

2026-08-26 06:41:07 +08:00
# 远程CI供应链一致性证据
## 1. 目标与边界
`cmd/ci-supply-chain-conformance`把固定源提交的托管CI运行、构建与安全检查、镜像摘要及CycloneDX SBOM形成`remote-ci-supply-chain-conformance-report-v1`。本地执行可以验证JSON协议和校验器,但报告固定为`LOCAL_CI_TOOLCHAIN/external_validation_required=true`,不能把开发机结果冒充远程供应链验收。
该门禁证明“报告中的远程运行和制品身份彼此一致”,不自动证明业务审批、真实设备体验或生产部署已经完成。发布负责人仍需从受控仓库、制品库和CI系统导出事实,不得手工填造不存在的运行或摘要。
## 2. 最小证据集
真实采集必须绑定候选版本、发布包使用的`sha256`构建摘要、40或64字符完整源提交、仓库、工作流、运行编号、HTTPS运行地址、触发类型、ref、尝试次数、成功结论、时间线、执行人及不同的复核人。
14项检查必须唯一且全部`PASS`:
1. Go格式、Go vet与测试;
2. OpenAPI类型生成、Web类型检查与构建、Compose校验;
3. 后端与Web镜像构建;
4. Go漏洞/许可证、前端漏洞/许可证;
5. 仓库密钥、基础设施配置、后端镜像和Web镜像扫描;
6. CycloneDX SBOM生成。
制品还必须包含后端、Web两个不可变镜像摘要,以及`SOURCE`、`BACKEND_IMAGE`、`WEB_IMAGE`三份`CYCLONEDX_JSON`文件摘要。检查日志、镜像制品和SBOM均需提供可追溯证据引用。
## 3. 采集与校验
仓库CI会上传三份SBOM和`build-metadata.json`,其中记录完整提交、运行编号和两个本次构建镜像ID。正式发布若将镜像推入制品库,应以制品库返回的不可变清单摘要为准,并保证采集中的`build_digest`与证据包候选一致。
下载运行日志、构建元数据、SBOM和制品库摘要后,按`remote-ci-supply-chain-capture-v1`整理采集,再执行:
```powershell
go run ./cmd/ci-supply-chain-conformance `
-capture E:\evidence\remote-ci-capture.json `
-candidate-version 0.64.0-rc.1 `
-build-digest sha256:<64位摘要> `
-source-commit <40或64位提交> `
-output E:\evidence\remote-ci-report.json
```
将报告作为`REMOTE_CI_SUPPLY_CHAIN`首个文件并设为`VERIFIED`。发布证据包会重新检查候选、构建摘要、源提交、11项报告内一致性检查、14项CI结果、两个镜像摘要和三份SBOM;任何缺失都拒绝`VERIFIED`,且此门禁不可豁免。
本地协议冒烟只运行:
```powershell
.\scripts\smoke-ci-supply-chain-conformance.ps1
```
该脚本不访问GitHub、不构建镜像、不修改业务数据,只证明本地校验工具可运行,并明确保留外部验证要求。