2.7 KiB
远程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:
- Go格式、Go vet与测试;
- OpenAPI类型生成、Web类型检查与构建、Compose校验;
- 后端与Web镜像构建;
- Go漏洞/许可证、前端漏洞/许可证;
- 仓库密钥、基础设施配置、后端镜像和Web镜像扫描;
- 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整理采集,再执行:
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,且此门禁不可豁免。
本地协议冒烟只运行:
.\scripts\smoke-ci-supply-chain-conformance.ps1
该脚本不访问GitHub、不构建镜像、不修改业务数据,只证明本地校验工具可运行,并明确保留外部验证要求。