• 注册
  • 云计算 云计算 关注:2 内容:41341

    持续集成流水线中的制品管理(Nexus)

  • 查看作者
  • 打赏作者
  • 当前位置: 职业司 > 资讯 > 云计算 > 正文
    • 云计算
    • 我们可以在该工作流中通过Maven和CI服务器来构建,存储,管理已编译完成的制品。

      Nexus是一个存储库管理器,可存储和检索制品。它使您能够将构建的制品托管在私有且安全的存储库中。默认开发同学在进行开发的时候会使用一些包管理工具,例如:maven、ant、gradle这些都是常见项目编译构建工具 。这些工具可以理解为是一个命令行工具, 本身不会存储任何依赖包,而是通过公网官方的仓库中下载当前项目构建所需要的包。(内网的速度要比公网快,这会直接影响管道的构建速度)

      持续集成流水线中的制品管理(Nexus)

      制品上传 NexusUI页面

      Nexus的UI中提供制品上传的功能, 导航Upload, 选择要上传的目标仓库。 最后填写仓库中包的坐标和包信息。

      持续集成流水线中的制品管理(Nexus)

      使用Maven工具

      一般仓库都是需要认证后才能上传的, 所以首先需要在maven的配置文件中(settings.xml)填写仓库的认证信息。

      mymavenadminadmin123

      使用mvn deploy 命令上传发布制品,命令参数与格式:

      mvndeploy:deploy-file-DgroupId=xxxxxxpom中的groupId-DartifactId=xxxxxxpom中的artifactId-Dversion=xxxxxxpom中的版本号version-Dpackaging=xxxxxxpom中打包方式-Dfile=xxxxxx本地文件-Durl=xxxxxx仓库url-DrepositoryId=xxxxxx对应的是setting.xml(认证)

      持续集成流水线中的制品管理(Nexus)

      如果此时包已经有pom.xml 文件描述, 可以直接通过pom.xml文件进行上传:

      mvndeploy: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 使用Jenkins插件

      安装Nexus Artifact Uploader插件、使用片段生成器生成DSL。

      nexusArtifactUploaderartifacts:[[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′)defNexusUploadByPlugin(artifactId,file,type,groupId,version){nexusArtifactUploaderartifacts:[[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 API

      持续集成流水线中的制品管理(Nexus)

      经过调试,整理如下类型文件上传的接口:

      ##PNGcurl-XPOST”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&ZIPcurl-XPOST”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-XPOST”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”##Jarfilecurl-XPOST”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 curl-uadmin:admin123 链接 Wget wget–http-user=admin–http-passwd=admin123 链接 案例: 配置制品上传Pipeline

      其实我们可以参考Nexus的UI页面, 使用Jenkins来做一个用于上传制品包的流水线作业:

      srcUrl 指的是源码包的源码/包的仓库; branchName 源码包仓库的分支; groupId、artifactid、 version maven类型仓库的坐标; type 包类型;

      持续集成流水线中的制品管理(Nexus)

      这个Jenkinsfile包含4个阶段, 分别是下载代码、代码编译、单元测试、上传制品。

      @Library(“mylib@main”)_importorg.devops.*defcheckout=newCheckout()defbuild=newBuild()defunittest=newUnitTest()defsonar=newSonar()pipeline{agent{label”build”}options{skipDefaultCheckouttrue}stages{stage(“Checkout”){steps{script{println(“GetCode”)checkout.GetCode(“${env.srcUrl}”,”${env.branchName}”)}}}stage(“Build”){steps{script{println(“Build”)sh”mvncleanpackage”}}}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′)defNexusUploadByPlugin(artifactId,file,type,groupId,version){nexusArtifactUploaderartifacts:[[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相关的主题

      请登录之后再进行评论

      登录

      手机阅读天地(APP)

      • 微信公众号
      • 微信小程序
      • 安卓APP
      手机浏览,惊喜多多
      匿名树洞,说我想说!
      问答悬赏,VIP可见!
      密码可见,回复可见!
      即时聊天、群聊互动!
      宠物孵化,赠送礼物!
      动态像框,专属头衔!
      挑战/抽奖,金币送不停!
      赶紧体会下,不会让你失望!
    • 实时动态
    • 签到
    • 做任务
    • 发表内容
    • 偏好设置
    • 到底部
    • 帖子间隔 侧栏位置:
    • 还没有账号?点这里立即注册