前言:
Nexus作为市面上为数不多的开源制品仓库,我个人在做配置管理体系建设的时候是会比较经常使用的,很多开发团队中他们不是很重视或者说虽然因为制品遇到了很多问题但是因为没有接触过制品管理的办法所以苦痛已久,今天也跟各位分享一下配置管理中Nexus的使用,便于大家制定规范和试点落地。
一、Nexus与SVN的优劣势对比
SVN的一些劣势:也是我所在团队遇到的问题(我们的SVN已经70T啦,泰酷辣)
1、SVN随着项目迭代和使用周期的增长容量会变的越来越大,且难以清理
2、SVN不具备检索能力无法快速找到所需的制品
3、SVN主要是作为代码的版本管理系统和文件管理系统,不支持二进制文件/jar/war等类型的制品管理,如果使用SVN管理可能导致性能下降和延迟,以及合并二进制文件时可能出现的数据丢失或损坏
Nexus在弥补了SVN的劣势前提下其他优势:
1、、Nexus支持灵活的权限控制,可以根据需要为不同的用户或团队设置不同的访问权限,确保资源的安全性和保密性。
2、Nexus与主流的CI/CD工具(如Jenkins、Gitlab等)无缝集成,可以自动化构建、测试和部署过程,减少手动操作,提高交付速度和质量
总结:SVN只适合用来做文档管理,代码和依赖仓库(二三方包)管理建议使用正式的制品库管理工具 这些工具针对性的提供的功能会给管理带来很多便利。
二、Nexus的使用规划
1.制品层级划分
根据团队实际情况将制品划分为不同等级,比如你们的测试等级为SIT-->UAT--PROD,那么就需要在Nexus创建这3个等级的制品仓库用于存放不同等级的制品(自行权限划分)
2、制品出入规范
2.1在想保证制品质量的前提下Nexus只会接收使用自动化流水线构建出来的制品包,比如Jenkins、Gitlab流水线、其他Devops工具等。
2.2使用自动化构建的流水线用来出第一个等级测试包,测试通过后再有两个配套等级的制品晋级流水线来做仓库间的拷贝,满足单一可信源确保制品质量。(比较核心,自己悟一下)
三、制品上传方式
1.手动上传
上传后的目录结构(上传的XML)
主要说明一下要填写的参数
GroupID:最高级群组的名字这个需要根据你规范的定义每次固定填写
ArtifectID:格式固定,规范自定义,会自动创建目录
举个例子规范如果定义为:客户名.项目名称.迭代版本.发版日期
那么ArtifectID值就是:kehu.Axiangmu.3version.240808(用"."隔开)
Version:本次构建版本号
2.MVN命令上传
1.搭建mvn环境,配置settings.xml
1.1安装apache-maven
......(自己找安装包,网上很多)
1.2配置环境变量
cd /etc/profile
export MAVEN_HOME=/home/gitlab/apache-maven-3.6.1
export PATH=$MAVEN_HOME/bin:$PATH
1.3确认生效
source /etc/profile
mvn -v
2.mvn-settings.xml配置
2.1打开mvn配置文件setting.xml
vim apache-maven-3.6.1/conf/settings.xml
2.2配置<server>
这里主要配置的是不同权限的账号,比如我将制品分为了3个等级,并设置了不同等级对应的权限账号。
2.3配置<mirrors>
mirror配置你需要访问的Nexus仓库路径和账号密码信息等,与server对应,url获取位置如下图:
2.4上传命令
mvn deploy:deploy-file \
-DgroupId=${GroupId} \
-DartifactId=${ArtifactId}_${BUILD_DATE} \
-Dversion=${MAJOR_FW_VERSION}"("${env.BUILD_ID}A")" \
-Dpackaging=zip \
-Dfile=${CHIP_MODEL}_${ArtifactId}_${BUILD_DATE}.zip \
-Durl=http://10.10.xx.xx:8089//repository/sdmc_Dev \
-DrepositoryId=sdmc_public
举例:
mvn deploy:deploy-file \
-DgroupId=Anodirs_s.s905x4.0106.Telia \
-DartifactId=Telia_20240228 \
-Dversion=1.1.1 \
-Dpackaging=zip \
-Dfile=test.zip \
-Durl=http://10.10.xx.xx:8089/repository/sdmc_Dev \
-DrepositoryId=sdmc_Dev
特别说明:
DrepositoryId是mvn-settings.xml中配置的有权限的账密
每一行后面都需要空格+"\"
2.5下载命令
/mvn dependency:get \
-DremoteRepositories=http://10.10.xx.xx:8089//repository/sdmc_Dev/ \
-DgroupId=${GroupId} \
-DartifactId=${ArtifactId} \
-Dversion=${Package_one_BUILD_DATE}_packageone_user \
-Dpackaging=zip \
-DrepositoryId=sdmc_public
如有疑问可以留言,看到会回。
标签:SVN,制品,Nexus,sdmc,配置管理,xx,mvn From: https://blog.csdn.net/qq67709200/article/details/140586573