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

48 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 远程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、不构建镜像、不修改业务数据,只证明本地校验工具可运行,并明确保留外部验证要求。