到Nexus私服的发包实践

目录

一、前言

二、后端

三、前端

四、总结


一、前言

        Nexus是一个强大的仓库管理器,极大地简化了内部仓库的维护和外部仓库的访问。 支持搭建私服,通常被作为docker、npm、yum、go、apt等的私有仓库。 其优点为:加速构建、提高稳定性、使用文件系统和Lucene来组织数据(不需额外搭建数据库)。 本文将从前端和后端的角度,分别介绍发包的方式。

二、后端Maven项目

        本章节首先介绍了maven项目发包之前,需要做的一些nexus账户和源的配置。然后,介绍本地开发的maven项目,需要用到的发包命令。接着,又介绍了针对本地的jar包,网上第三方不维护和的jar包,发包到nexus的方式。

        2.1 配置setting.xml

        本人所负责到的后端项目,均是maven项目,maven项目在发包之前,都需要在setting.xml文件中对目标nexus进行配置,以下是我使用的配置,可进行参考:

  <servers>
	<!-- 发包使用到的nexus账户,务必确保该账户有以下mirror中url的权限 -->
	<server>
      <id>maven-public</id>
      <username>admin</username>
      <password>Admin123</password>
    </server>	
  <servers>
  <mirrors>
	<!-- nexus 发包目标位置 -->
	<mirror>
	  <id>nexus</id>
      <mirrorOf>*</mirrorOf>
      <name>RDXA Repository</name>
      <url>http://192.168.70.20:8081/repository/maven-public/</url>
	</mirror>
  <mirrors>

图 使用maven发包前针对nexus的配置参考

         2.2 针对存在源码的maven项目

        主要使用场景有3种,第一种,有的包年代久远,官网、Maven中央仓库或者镜像库,早已经不更新该依赖包了,但是能从github或者码云上找到开放出的源码。第二种,我们在使用第三方开源库的过程中,发现了已知的bug。第三种,本地开发的maven项目。例如:公司内部的公共库。

        特别是前2种情况,通常我们可以把该开源项目的源码下载到本地,进行编译或者bug修复,并发布到私服上,就能供各产品线开发人员,或者项目CI/CD使用。

mvn clean deploy 
-Dpmd.skip=true 
-Dcheckstyle.skip=true 

图 针对本地开发的maven项目发包命令

         2.3 针对特定jar包

        主要介绍针对jar包的发包方式。首先,比如古老项目中,有用到的网上第三方库,该第三方库早已不再维护,但是能找到该项目jar包的备份。然后,可以是被中央仓库或者镜像仓库永久下架的,但是能找到该项目jar包的备份。以下,以taobao-sdk-java-auto为例。

mvn deploy:deploy-file 
-DgroupId=com.dingtalk.api 
-DartifactId=top-api-sdk 
-Dversion=2.0.0-RELEASE 
-Dpackaging=jar 
-Dfile="D:\jar\taobao-sdk-java-auto_1479188381469-20210630.jar" 
-DgeneratePom=true 
-DrepositoryId=maven 
-Durl=http://192.168.70.29:8081/repository/maven-public/ 
-DrepositoryId=maven-public

图 针对jar包发包命令

三、前端Npm项目 

        本章节主要介绍npm项目发包实践。主要使用场景与章节2.2中类似,此处将不再赘述。

        以下脚本或者命令,只适用于本人使用到的npm发包场景。

        首先,拉公共库代码。然后,升级版本号。按照项目迭代规约,公共库版本号需要升级。其次,更改npm源为公共源npm-group,确保装包可用。接下来,执行install和build命令进行装包和打包,生成发布所需文件。进一步,模拟nexus登陆,该用户需拥有nexus上发布空间的publish权限。最后,更改发布源,执行publish命令进行版本发布。

        针对以上业务需求,本人使用到的发包脚本如下:

#!/bin/sh
jenkins_job_name=$2
npm_package_name=$3

#1.退出登陆,确保登陆用户为认证用户
rm -rf ./.npmrc
npm logout
npm -v
npm config get registry
rm -rf package-lock.json
rm -rf yarn.lock


#2.更改版本号
ansible-playbook -e "host_name=$1 project_name=$2 package_version=$4" /home/jenkins/ci/$1/are-publish-npm.yml


#3.装包
rm -rf ./.npmrc
npm config set registry http://192.168.25.57:8081/repository/npm-group/
(yarn install) && ( echo 🚨install success ) 


#4.模拟登陆,查看登陆信息
echo "email=admin-fs@example.org" > ./.npmrc
echo "always-auth=true" >>  ./.npmrc
echo "_auth=YWRtaW4tZnM6YWRtaW4tZnM=" >>  ./.npmrc
npm whoami 


#5.设置发布源,进行发布
npm config set registry http://192.168.25.57:8081/repository/npm-product-FusionSite/
npm config get registry
( npm run build:umd ) && ( echo 🚨$npm_package_name-npm-build success ) && ( npm publish ) || ( echo 🚨$npm_package_name"Error: $_" > ./suppinter_publish.log )
echo 🚨$npm_package_name publish success


#6.还原发布镜像源
npm config set registry http://192.168.25.57:8081/repository/npm-group/

图 针对npm项目发包命令

四、总结

        技术栈层出不穷,更新迭代飞快,产生了众多派系,例如maven和npm等等派系。其相同派系的项目,编译,测试和发布过程类似,均可以参考本文所使用到的发包命令,并配合jenkins灵活使用,来进一步健全devops体系。

        最后,希望本文能启发到你,也欢迎有其它使用场景的朋友来和我交流,共同进步是我们共同的目标。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值