首页/开发/CI/CD 与发布速查/构建制品(Artifact)的定义与形态
构建与制品管理58 条

构建制品(Artifact)的定义与形态

构建输出中需要被保存、传递与部署的那部分:二进制、容器镜像、包文件、前端静态资源或归档文件。

CI/CD 与发布速查开发更新于 2026-10-13

构建制品是什么

构建输出中需要被保存、传递与部署的那部分:二进制、容器镜像、包文件、前端静态资源或归档文件。判定标准是部署与回滚所需要的最小完整集合;存放位置是制品库(Nexus、Artifactory、Harbor、云镜像仓库)而不仅是 CI 缓存。制品应带来源信息(提交号、构建号)与校验和:出现线上版本问题时能快速确认部署的到底是什么,而不是靠猜。

基本信息

常见形态jar 与 war、二进制、npm 与 pip 包、容器镜像、归档、前端 dist
判定标准部署与回滚所需要的最小完整集合
存放制品库(Nexus、Artifactory、Harbor、云仓库)而非只放 CI 缓存
伴随信息校验和、提交号、构建号、物料清单
命名要求含版本号且只增不改(不可变)

典型使用场景

  • 发布对象:部署与回滚以制品为单位,不是以仓库里的代码为单位。
  • 审计取证:回答生产运行的是哪个提交,靠制品的来源信息。
  • 安全检查:制品入库时做病毒与漏洞扫描,拦截被污染的构建产物。
  • 对外交付:给客户的安装包与镜像同样按制品管理。
  • 离线交付:归档制品用哈希校验保证传输完整性。
  • 清理策略:按保留策略定期瘦身,长期归档与短期构建分开管理。

制品清单示例

制品清单示例
app-1.8.0.jar                  # 部署对象
app-1.8.0.jar.sha256           # 校验和,防篡改防损坏
sbom-1.8.0.cdx.json            # 软件物料清单
build-info-1.8.0.json          # 提交号、构建号、流水线链接
构建信息文件随制品归档:排查线上版本问题时省去大量猜测,回滚时也能确认目标内容。
容器镜像同样是制品:镜像仓库应启用不可变标签或按摘要引用,防止标签被覆盖后内容漂移。
构建环境也要可追溯:本机构建后手工上传的产物难以复现,正式制品应由受控流水线产出。

易错点

  • 只保存可执行文件、不保存校验和与来源信息:出现问题时无法确认部署的到底是什么。
  • 把构建日志当制品:日志是过程记录,无法用于部署与回滚,用它回溯等于没有制品。
  • 制品命名可覆盖(同名重传):下游引用内容错乱,应使用不可变命名或按摘要引用。
  • 制品散落在个人机器与聊天工具:版本失控,交付与回滚无章可循。
  • 从不清理制品库:存储膨胀、检索变慢,保留策略应区分长期归档与临时构建。

数据来源与参考

  • Humble & Farley《Continuous Delivery》
  • GitLab Docs《Job artifacts》
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌