你有没有遇到过这样的场景:

Java项目打好的Jar包,不知道存在哪里,每次部署都要重新构建;
Python项目打好的wheel包,散落在各个开发者的电脑里;
前端打包好的静态资源,用微信传来传去,版本乱成一锅粥。

更别提还有Docker镜像、NuGet包、npm包……不同技术栈的制品格式五花八门,管理起来简直是一场噩梦。

这时候,你需要一个东西:制品库管理器

今天这篇文章,我们就来聊聊这个CI/CD流水线中的核心枢纽——Nexus。

一、先搞清楚两个基础概念

什么是制品(Artifact)?

将应用源代码编译打包后,得到的单个可共享、可迁移的文件,就是制品。

常见的制品格式:

  • JAR / WAR(Java)

  • ZIP / TAR(通用压缩包)

  • Docker镜像

  • npm包

  • PyPI包

简单理解:你写的代码是“原材料”,编译打包后的东西,就是“成品”。这个成品,就是制品。

什么是制品库(Artifact Repository)?

制品库,就是专门用来存储这些“成品”的地方。

不同的制品格式,需要不同的制品库来存储。比如:

  • JAR包 → Maven仓库

  • npm包 → npm仓库

  • Docker镜像 → Docker Registry

如果每个技术栈都用一套独立的存储系统,管理会非常分散。

什么是制品库管理器(Artifact Repository Manager)?

用一套统一的应用,管理所有不同格式的制品仓库。这就是制品库管理器。

它提供统一的界面、统一的访问入口、统一的管理能力。无论你是Java、Python、Node.js还是Docker,都能在一个地方搞定。

最主流的开源实现,就是Sonatype Nexus

二、Nexus能做什么?

1. 企业内部私有制品存储

公司的私有项目,打出来的Jar包、Docker镜像,肯定不能传到公共仓库。Nexus可以创建内部私有仓库,让所有制品集中存储、统一管理。

2. 公共制品库的代理缓存

团队开发需要从Maven中央仓库、npm公共仓库下载依赖。每次构建都从公网拉取,慢不说,万一公网挂了,整个团队都卡住。

Nexus可以为公共制品库创建代理仓库。第一次下载后,依赖就被缓存到Nexus。以后团队里任何人再需要同一个依赖,直接从Nexus拉,又快又稳。

3. 支持几乎所有的制品格式

Nexus支持的格式列表非常全:

分类 格式
语言包管理 Maven、npm、NuGet、PyPI、RubyGems、Go
操作系统包 APT、Yum
容器 Docker
其他 Helm、Git LFS、Raw(任意文件)

无论你的技术栈是什么,Nexus基本都能覆盖。

三、Nexus在CI/CD流水线中的位置

制品库管理器不是给人手动操作的,它是自动化流水线的核心环节。

一个典型的GitLab CI/CD流水线是这样跑的:

代码提交 → 运行测试 → 编译打包 → 推送到Nexus → 从Nexus拉取 → 部署到服务器
  • 推送:构建完成后,通过REST API把制品自动上传到Nexus

  • 拉取:部署时,从Nexus把制品下载到目标服务器

Nexus literally sits in the middle of the whole CI/CD pipeline process.

四、Nexus的核心功能

1. REST API(重中之重)

Nexus不是给人手动操作的。上传制品、下载制品、查询版本、清理旧包……所有这些操作,都需要通过API自动化完成。

这就是为什么REST API如此重要——它是Nexus和Jenkins、GitLab CI等工具集成的桥梁。

2. 清理策略

持续集成场景下,每次代码提交都会生成一个新制品。一天几十次提交,一周下来几百个版本。如果不清理,硬盘迟早被撑爆。

Nexus支持配置清理策略,自动删除过期的旧版本,只保留最近几个稳定版本。不用人工干预,存储空间自动释放。

3. 备份与恢复

制品是企业的重要资产,丢了就完蛋。Nexus提供内置的存储机制,支持便捷的备份恢复和存储扩容。

4. LDAP集成

百人规模的企业里,给每个开发者单独配账号?太麻烦。Nexus支持LDAP集成,统一身份认证,权限管理一键搞定。

5. 搜索功能

当Nexus里存了几千个制品,想找到某个特定版本,总不能一个个翻文件夹。Nexus支持跨仓库搜索,输入关键词,秒定位。

6. 版本与元数据管理

可以为制品打标签,区分开发版本、测试版本、发布版本。版本管理清晰,回滚也方便。

7. 系统用户令牌认证

自动化工具(如Jenkins)需要访问Nexus,总不能用人手输密码。Nexus支持系统用户令牌认证,专门给机器用的账号,安全又方便。

五、开源免费vs商业版

Nexus提供免费开源版本(OSS)和商业版本(Pro)。

  • 开源版:满足绝大多数场景,小团队够用

  • 商业版:提供技术支持、更多格式支持、高级功能

企业如果需要技术支持,可以购买商业版;个人学习、小团队使用,开源版完全够用。

六、总结:为什么需要制品库管理器?

问题 没有制品库 有Nexus
制品存储 散落在各开发者电脑 集中存储,统一管理
依赖下载 每次都从公网拉,慢 本地代理缓存,快
版本管理 靠文件名区分,乱 元数据管理,清晰
清理旧包 手动删除,麻烦 自动清理策略
工具集成 手动上传下载 REST API自动化

写在最后

制品库管理器不是那种“装上就能用”的工具,它是整个CI/CD流水线的核心枢纽

没有它,自动化部署链条就断了。有了它,从代码提交到上线部署,全程自动化,中间不需要任何人手动传文件。

接下来的课程,我们会在DigitalOcean云服务器上亲手搭建Nexus,创建不同类型的仓库,配置清理策略,再用Maven和Gradle把制品推上去。

到时候你会发现:原来一套成熟的CI/CD流程,就是从这样一个“仓库”开始的。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐