作者:Lizeyang 2021-10-12 08:47:01
云计算 Nexus是一个存储库管理器,可存储和检索制品。它使您能够将构建的制品托管在私有且安全的存储库中。默认开发同学在进行开发的时候会使用一些包管理工具,例如:maven、ant、gradle这些都是常见项目编译构建工具 。
在善右等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都做网站、成都网站设计 网站设计制作定制网站开发,公司网站建设,企业网站建设,成都品牌网站建设,网络营销推广,外贸营销网站建设,善右网站建设费用合理。
我们可以在该工作流中通过Maven和CI服务器来构建,存储,管理已编译完成的制品。
Nexus是一个存储库管理器,可存储和检索制品。它使您能够将构建的制品托管在私有且安全的存储库中。默认开发同学在进行开发的时候会使用一些包管理工具,例如:maven、ant、gradle这些都是常见项目编译构建工具 。这些工具可以理解为是一个命令行工具, 本身不会存储任何依赖包,而是通过公网官方的仓库中下载当前项目构建所需要的包。(内网的速度要比公网快,这会直接影响管道的构建速度)
Nexus的UI中提供制品上传的功能, 导航Upload, 选择要上传的目标仓库。 最后填写仓库中包的坐标和包信息。
一般仓库都是需要认证后才能上传的, 所以首先需要在maven的配置文件中(settings.xml)填写仓库的认证信息。
mymaven admin admin123
使用mvn deploy 命令上传发布制品,命令参数与格式:
- mvn deploy:deploy-file
- -DgroupId=xxxxxx pom中的groupId
- -DartifactId=xxxxxx pom中的artifactId
- -Dversion=xxxxxx pom中的版本号version
- -Dpackaging=xxxxxx pom中打包方式
- -Dfile=xxxxxx 本地文件
- -Durl=xxxxxx 仓库url
- -DrepositoryId=xxxxxx 对应的是setting.xml(认证)
如果此时包已经有pom.xml 文件描述, 可以直接通过pom.xml文件进行上传:
- mvn deploy:deploy-file \
- -DgeneratePom=false \
- -DrepositoryId=mymaven \
- -Durl=http://192.168.1.200:8081/repository/mymavenrepo \
- -DpomFile=pom.xml \
- -Dfile=target/demo-0.0.1-SNAPSHOT.jar
安装Nexus Artifact Uploader插件、使用片段生成器生成DSL。
- nexusArtifactUploader artifacts: [[artifactId: 'DevOpstest',
- classifier: '',
- file: 'target/demo-0.0.1-SNAPSHOT.jar',
- type: 'jar']],
- credentialsId: '1de05a13-197c-4a72-8c6a-cd330fc45559',
- groupId: 'com.jenkins',
- nexusUrl: '192.168.1.200:8081',
- nexusVersion: 'nexus3',
- protocol: 'http',
- repository: 'mymavenrepo',
- version: '1.1.2'
扩展: 如果需要经常上传制品, 我们最后将其封装在一个函数中,便于复用。
- //NexusUploadByPlugin('devops-test', 'target/demo-0.0.1-SNAPSHOT.jar', 'jar', 'com.jenkins','1.1.2')
- def NexusUploadByPlugin(artifactId, file, type, groupId,version){
- nexusArtifactUploader artifacts: [[artifactId: artifactId,
- classifier: '',
- file: file,
- type: type]],
- credentialsId: '1de05a13-197c-4a72-8c6a-cd330fc45559',
- groupId: groupId,
- nexusUrl: '192.168.1.200:8081',
- nexusVersion: 'nexus3',
- protocol: 'http',
- repository: 'mymavenrepo',
- version: version
- }
经过调试,整理如下类型文件上传的接口:
- ##PNG
- curl -X POST "http://192.168.1.200:8081/service/rest/v1/components?repository=myrepo" \
- -H "accept: application/json" \
- -H "Content-Type: multipart/form-data" \
- -F "raw.directory=/tmp" \
- -F "raw.asset1=@默认标题_自定义px_2020-10-01-0.png;type=image/png" \
- -F "raw.asset1.filename=默认标题_自定义px_2020-10-01-0.png"
- ## tar.gz & ZIP
- curl -X POST "http://192.168.1.200:8081/service/rest/v1/components?repository=myrepo" \
- -H "accept: application/json" \
- -H "Content-Type: multipart/form-data" \
- -F "raw.directory=/tmp" \
- -F "raw.asset1=@nexus-3.30.0-01-unix.tar.gz;type=application/x-gzip" \
- -F "raw.asset1.filename=aaa.tar.gz"
- curl -X POST "http://192.168.1.200:8081/service/rest/v1/components?repository=myrepo" -H "accept: application/json" -H "Content-Type: multipart/form-data" -F "raw.directory=/tmp" -F "raw.asset1=@waypoint_0.1.5_linux_amd64.zip;type=application/x-gzip" -F "raw.asset1.filename=waypoint_0.1.5_linux_amd64.zip"
- ## Jar file
- curl -X POST "http://192.168.1.200:8081/service/rest/v1/components?repository=myrepo" \
- -H "accept: application/json" \
- -H "Content-Type: multipart/form-data" \
- -F "raw.directory=/tmp" \
- -F "raw.asset1=@aopalliance-1.0.jar;type=application/java-archive" \
- -F "raw.asset1.filename=aopalliance-1.0.jar"
- curl -u admin:admin123 http://192.168.1.200:8081/repository/anyops/com/anyops/a
- nyops-devops-service/1.1.1/anyops-devops-service-1.1.1.jar -o anyops-devops-service-1.1.1.jar
- wget --http-user=admin --http-passwd=admin123 http://192.168.1.200:8081/repos
- itory/anyops/com/anyops/anyops-devops-service/1.1.1/anyops-devops-service-1.1.1.jar
其实我们可以参考Nexus的UI页面, 使用Jenkins来做一个用于上传制品包的流水线作业:
这个Jenkinsfile包含4个阶段, 分别是下载代码、代码编译、单元测试、上传制品。
- @Library("mylib@main") _
- import org.devops.*
- def checkout = new Checkout()
- def build = new Build()
- def unittest = new UnitTest()
- def sonar = new Sonar()
- pipeline {
- agent { label "build" }
- options {
- skipDefaultCheckout true
- }
- stages{
- stage("Checkout"){
- steps{
- script {
- println("GetCode")
- checkout.GetCode("${env.srcUrl}", "${env.branchName}")
- }
- }
- }
- stage("Build"){
- steps{
- script{
- println("Build")
- sh "mvn clean package "
- }
- }
- }
- stage("UnitTest"){
- steps{
- script{
- unittest.CodeTest("${env.buildTool}")
- }
- }
- }
- stage("Upload"){
- steps{
- script{
- NexusUploadByPlugin("${env.artifactId}",
- 'target/demo-0.0.1-SNAPSHOT.jar',
- "${env.type}",
- "${env.groupId}",
- "${env.version}")
- }
- }
- }
- }
- }
- //NexusUploadByPlugin('devops-test', 'target/demo-0.0.1-SNAPSHOT.jar', 'jar', 'com.jenkins','1.1.2')
- def NexusUploadByPlugin(artifactId, file, type, groupId,version){
- nexusArtifactUploader artifacts: [[artifactId: artifactId,
- classifier: '',
- file: file,
- type: type]],
- credentialsId: '1de05a13-197c-4a72-8c6a-cd330fc45559',
- groupId: groupId,
- nexusUrl: '192.168.1.200:8081',
- nexusVersion: 'nexus3',
- protocol: 'http',
- repository: 'mymavenrepo',
- version: version
- }
历史与Nexus相关的主题
本文转载自微信公众号「DevOps云学堂」
标题名称:持续集成流水线中的制品管理(Nexus)
URL网址:http://www.shufengxianlan.com/qtweb/news42/60442.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联