700 字约 2 分钟
SBOM 生成插件扫描依赖组件,支持生成 SPDX、CycloneDX 和 SWID 格式的组件清单。 默认扫描 PR 新增及版本变化的组件;生成完整 SBOM 时,设置 scanMode: full 和 publish: true。 该插件不执行质量门禁。
在 CNB 中使用
在业务仓库根目录的 .cnb.yml 中添加以下配置,在 push 时生成当前 Commit 的完整 SBOM,并上传报告附件:
.cnb.yml
main:
push:
- stages:
- name: 生成完整 SBOM
image: cnbcool/sca-sbom:latest
timeout: 30m
settings:
scanMode: full
publish: true以上配置默认生成 SPDX 格式的报告附件。需要 CycloneDX JSON 时,设置 format: cyclonedx-json。
以下示例扫描 PR 新增及版本变化的组件,默认不生成、不上传报告附件:
.cnb.yml
main:
pull_request.target:
- stages:
- name: 扫描组件变化
image: cnbcool/sca-sbom:latest
timeout: 30mpull_request 与 pull_request.target 的区别
详细区别请参考 代码版本选择。
参数说明
插件参数通过 settings 传递:
| 参数 | 说明 | 默认 |
|---|---|---|
scanMode | 扫描模式:diff 为 PR 组件变化,full 为当前 CNB_COMMIT 的全部组件 | diff |
format | 报告格式,取值见下表 | spdx |
publish | 是否生成并上传报告附件;上传需要在可信事件中执行 | false |
format | 后缀 | 格式 |
|---|---|---|
spdx | .spdx | SPDX 2.3 Tag-Value |
spdx-json | .spdx.json | SPDX 2.3 JSON |
cyclonedx-json | .cyclonedx.json | CycloneDX JSON |
cyclonedx-xml | .cyclonedx.xml | CycloneDX XML |
swid | .swid.xml | SWID XML |
输出说明
publish: true 时生成报告附件,文件名为 security-sbom-<scanMode>-<commit>.<ext>,可在 Commit 详情页下载。
diff:包含新增及版本变化的组件,使用变更后的版本,不包含删除的组件。full:包含当前 Commit 的全部组件。
需要完整组件清单时使用 full,增量报告不能替代完整 SBOM。
Commit 元数据
插件把组件数量和结果状态写入本次扫描的目标 Commit 的 Annotation:
sca.sbom.full.reporter=https://...
sca.sbom.full.gate=pass
sca.sbom.full.total.count=128total.count 为本次扫描的组件数量,增量模式为变化组件数,全量模式为全部组件数。 gate 恒为 pass,其他字段含义见Commit 元数据。
退出码
| 退出码 | 说明 |
|---|---|
0 | 扫描成功,包括没有组件变化的情况 |
2 | 配置错误、扫描失败;publish: true 时附件或元数据发布失败 |
下一步
- 插件总览 —— 三个插件的整体配置与门禁说明
- 开源组件漏洞扫描 —— 漏洞门禁与增量规则
- License 扫描 —— License 风险门禁