到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體系。
? ? ? ? 最后,希望本文能啟發到你,也歡迎有其它使用場景的朋友來和我交流,共同進步是我們共同的目標。
總結
以上是生活随笔為你收集整理的到Nexus私服的发包实践的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电大计算机专业毕业自我鉴定,电大计算机毕
- 下一篇: rk3399 中间层移除短按power息