2.7 生成软件物料清单(SBOM)
2 分钟阅读
原文链接: https://docs.swift.org/latest/documentation/packagemanagerdocs/generatingsboms/
2.7 生成软件物料清单(SBOM)
用 SBOM 文档列出组件与依赖的清单。
概述
Swift Package Manager 可以为 Swift 包和产品生成软件物料清单(SBOM)文档。
目前 Swift Package Manager 支持两种 SBOM 格式:CycloneDX 和 SPDX。
你可以用带有 SBOM 标志的 swift build 命令,或者专用的 swift package generate-sbom 子命令来生成 SBOM。
用 build 命令生成 SBOM
用命令 swift build 编译项目并生成 SBOM。把 --sbom-spec 与 --target 标志一起使用会报错。
通过 Swift Build 构建后端生成 SBOM 时,会把构建期的条件编译纳入考虑。
| |
下面的例子不使用 Swift Build 构建后端来生成 SBOM。由于没有把构建期条件编译应用于 SBOM,不使用 Swift Build 生成的 SBOM 可能并不完全准确。
| |
用 package 命令生成 SBOM
swift package generate-sbom 在不构建的情况下生成 SBOM。由于没有应用构建期条件编译,这个 SBOM 不如用 swift build --build-system swiftbuild 生成的 SBOM 准确。
要获得最高准确度,请使用命令 swift build --build-system swiftbuild 生成 SBOM。
不指定 --sbom-spec 时,会生成 Swift Package Manager 支持的所有 SBOM 规范。
| |
配置额外的标志
下列标志对 swift build 和 swift package generate-sbom 都适用:
为单个产品生成 SBOM
用 --product 标志为包中的某个特定产品生成 SBOM。
| |
过滤 SBOM 内容
用 --sbom-filter <type> 按包或产品过滤 SBOM。默认情况下,SBOM 同时包含包和产品。无论应用了哪种过滤,Swift Package Manager 始终会包含主组件。
| |
把 SBOM 输出到自定义目录
Swift Package Manager 默认把生成的 SBOM 放在 <build_output>/sboms。用 --sbom-output-dir 可以为生成的 SBOM 指定其他目录。
| |
把 SBOM 生成错误降级为警告
默认情况下,如果 SBOM 生成失败,build 或 package 命令也会失败。--sbom-warning-only 标志会把所有 SBOM 生成错误转换为警告。
| |
配置环境变量
生成 SBOM 也可以通过环境变量触发和配置,只需在运行 swift build 或 swift package generate-sbom 之前设置这些变量。使用命令行标志时,标志的优先级高于环境变量。
可以配置下列环境变量:
SWIFTPM_BUILD_SBOM_SPECSWIFTPM_BUILD_SBOM_OUTPUT_DIRSWIFTPM_BUILD_SBOM_FILTERSWIFTPM_BUILD_SBOM_WARNING_ONLY
| |
用 swift build 配合环境变量生成 SBOM 时,swift build 会生成 SBOM,当且仅当设置了 SWIFTPM_BUILD_SBOM_SPEC。