设为首页 收藏本站
查看: 2004|回复: 0

[经验分享] Jenkins 持续集成平台构建之使用nexus搭建maven私有仓库

[复制链接]
发表于 2018-9-4 09:15:50 | 显示全部楼层 |阅读模式
  一、介绍:
  上一篇文章介绍了maven的开放仓库无法满足构建需求,第一个原因是无法访问,第二个原因是不稳定,时而可以访问时而不可以,而且速度无法保证,这里介绍在本地通过nexus来搭建自己的私有仓库,这样就既稳定又快速
  环境介绍:Centos 6.6 x86_64 IP: 10.0.90.26
  软件版本:nexus-2.13.0-01-bundle.tar.gz
  二、开始安装配置
  1、下载nexus
  http://www.sonatype.org/nexus/go    ## ***下载速度会快些
  2、安装
#tar xf nexus-2.13.0-01-bundle.tar.gz -C /usr/local/  
#cd /usr/local
  
#ln -sv nexus-2.13.0-01/ nexus
  
启动
  
#cd nexus
  
#./bin/nexus    #查看用法
  
Usage: ./bin/nexus { console | start | stop | restart | status | dump }
  
# ./bin/nexus start
  
****************************************
  
WARNING - NOT RECOMMENDED TO RUN AS ROOT
  
****************************************
  
If you insist running as root, then set the environment variable RUN_AS_USER=root before running this script.
  
设置环境变量
  
#vi /etc/profile    ##在末尾添加如下:
  
export RUN_AS_USER=root
  
source环境变量文件,使其生效
  
#source  /etc/profile
  
重新再次启动
  
#./bin/nexus start
  
****************************************
  
WARNING - NOT RECOMMENDED TO RUN AS ROOT
  
****************************************
  
Starting Nexus OSS...
  
Started Nexus OSS.
  查看端口,默认端口是8081,如下:
#netstat -tunlp  
Active Internet connections (only servers)
  
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
  
tcp        0      0 0.0.0.0:8081                0.0.0.0:*                   LISTEN      25425/java
  
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      958/sshd
  
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1035/master
  
tcp        0      0 127.0.0.1:32000             0.0.0.0:*                   LISTEN      25425/java
  
tcp        0      0 :::22                       :::*                        LISTEN      958/sshd
  
tcp        0      0 ::1:25                      :::*                        LISTEN      1035/master
  查看生成的文件:
#cd /usr/local  
#ll
  
total 60
  
drwxr-xr-x.  2 root root 4096 Sep 23  2011 bin
  
drwxr-xr-x.  2 root root 4096 Sep 23  2011 etc
  
drwxr-xr-x.  2 root root 4096 Sep 23  2011 games
  
drwxr-xr-x.  2 root root 4096 Sep 23  2011 include
  
drwxr-xr-x.  2 root root 4096 Sep 23  2011 lib
  
drwxr-xr-x.  2 root root 4096 Sep 23  2011 lib64
  
drwxr-xr-x.  2 root root 4096 Sep 23  2011 libexec
  
drwxr-xr-x.  6 root root 4096 Apr 11 11:24 logstash
  
lrwxrwxrwx   1 root root   16 Jun 22 18:30 nexus -> nexus-2.13.0-01/   #nexus服务主目录
  
drwxr-xr-x   8 1001 1001 4096 Apr 12 22:11 nexus-2.13.0-01
  
drwxr-xr-x.  2 root root 4096 Sep 23  2011 sbin
  
drwxr-xr-x.  5 root root 4096 Aug  6  2015 share
  
drwxr-xr-x   3 1001 1001 4096 Apr 12 22:21 sonatype-work  #是真正的仓库目录
  
drwxr-xr-x.  3 root root 4096 Jun  8 10:56 src
  如果想修改默认端口,就到nexus配置文件中进行修改
#/usr/local/nexus/conf  
#vi nexus.properties
  
application-port=8081   ##将8081修改为自己想要的端口
  
我这里不修改了,用默认端口!
  修改nexus目录结构下面文件的属主和属组,因为默认是下面的属性:
#cd /usr/local/nexus  
# ll
  
total 40
  
drwxr-xr-x 3 1001 1001  4096 Jun 22 18:30 bin
  
drwxr-xr-x 2 1001 1001  4096 Jun 22 18:30 conf
  
drwxr-xr-x 2 1001 1001  4096 Jun 22 18:30 lib
  
-rw-r--r-- 1 1001 1001 11006 Apr 12 22:11 LICENSE.txt
  
drwxr-xr-x 2 1001 1001  4096 Jun 22 18:36 logs
  
drwxr-xr-x 4 1001 1001  4096 Jun 22 18:30 nexus
  
-rw-r--r-- 1 1001 1001   782 Apr 12 22:11 NOTICE.txt
  
drwxr-xr-x 5 1001 1001  4096 Jun 22 18:37 tmp
  
#chown root.root ./* -R
  3、在浏览器访问:
  http://10.0.90.26:8081/nexus 界面如下:
DSC0000.png

  右上角有一个“Log In”按钮,可以登录,默认用户名为:admin 密码:admin123,登录进去之后,可以修改密码,点击“Profile”
DSC0001.png

  然后弹出如下修改密码方框,设置密码即可:
DSC0002.png

  退出,重新登录,查看信息:
DSC0003.png

  Configuration指向的方框中的3rd party、Snapshots、Releases这三个,分别用来保存第三方jar、项目组内部的快照、项目组内部的发布版。
  4、配置定时任务
  有时候,为了让nexus更加智能,需要做一些定时任务,譬如定期下载索引,加快本地mvn检索速度。以建立定期下载索引为例,在Administration选项中找到Scheduled Tasks,在窗口页面点击Add,进行配置,如下图:
DSC0004.png

  三、nexus的一些简单配置
  1、将Central这个Repositories设置为Health Check(默认是不进行Health Check的),配置如下图:
DSC0005.png

  然后过一会儿Central就会变成如下的状态:
DSC0006.png

  2、设置一个用户,为了在maven的settings.xml配置使用,方法如下:
DSC0007.png

  选择“Set Password”之后,在弹出的方框中输入密码,然后选择“Set Password”就成功设置密码了。
  3、测试设置自建maven中央仓库来构建
到maven服务器上配置  
#cd /usr/local/maven/conf
  
将settings.xml修改为如下:
  
#cat settings.xml
  

  

  

  
  
  

  
  
  
   
  
  
  

  
  
  
  
  

  
  
  
   
  
        releases
  
        deployment    ##上一步设置的用户名和密码
  
        deployment
  
   
  
   
  
        snapshots
  
        deployment    ##上一步设置的用户名和密码
  
        deployment
  
   
  
  
  

  
  
  
   
  
      nexus
  
      *
  
      http://10.0.90.26:8081/nexus/content/groups/public/  #自建仓库的url
  
   
  
  
  

  
  
  
   
  
        nexus
  
        
  
         
  
            nexus
  
            Nexus
  
            http://10.0.90.26:8081/nexus/content/groups/public/ #自建仓库的url
  
            true
  
            true
  
         
  
        
  
        
  
         
  
            nexus-osc
  
            Nexus osc
  
            http://10.0.90.26:8081/nexus/content/groups/public/ #自建仓库的url
  
            true
  
            true
  
         
  
        
  
   
  
   
  

  
  
  
    nexus
  
  
  

  

  

  
保存退出后,开始测试构建!
  4、将jar部署至Nexus
  通过Eclipse Maven工具,或者直接操作Maven命令行,将jar部署至nexus,代码中的pom.xml文件,需要修改为自己的私服地址,如下:
  
...           #内容太多,省略了一些
  

  
  
  
    nexus-releases
  
      Nexus Release Repository
  
      http:///nexus/content/repositories/releases/
  
  
  
  
  
    nexus-snapshots
  
    Nexus Snapshot Repository
  
    http:///nexus/content/repositories/snapshots/
  
  
  

  

  
保存退出!
  以test_appios项目为例,具体如何添加git拉取代码,如何结合maven,上一篇文章已经介绍了,不在赘述,配置好如下图:
  代码管理部分:
DSC0008.png

  构建部分:这里Goals选项我使用如下参数,如果自己懂得如何修改配置这些参数,可以自定义,POM选项一定要配置为pom.xml因为我们是使用maven来构建代码的!
DSC0009.png

  开始构建:
DSC00010.png

  然后出现淡蓝色圆点表示构建成功(构建失败是淡红色圆点),点击“#11”--“Console Output”,查看构建过程log,如下:
DSC00011.png

  到Jenkins服务端查看构建成功的war格式的代码包
#/root/.jenkins/workspace/test_appios/target  
#ll
  
total 31412
  
drwxr-xr-x 6 root root     4096 Jun 23 10:33 classes
  
drwxr-xr-x 3 root root     4096 Jun 23 10:33 generated-sources
  
drwxr-xr-x 2 root root     4096 Jun 23 10:33 maven-archiver
  
drwxr-xr-x 5 root root     4096 Jun 23 10:33 siteService
  
-rw-r--r-- 1 root root   218500 Jun 23 10:33 siteService-sources.jar
  
-rw-r--r-- 1 root root 31924278 Jun 23 10:33 siteService.war
  
可以看到siteService.war就是构建成功的war包。
  PS:使用maven构建代码包,在源码中,java开发工程师都会定义pom.xml文件,这个文件是maven工程中的核心文件,定义了一个项目代码工程的jar依赖包,如果pom.xml中定义了依赖某一个jar包,在自定义的私有maven仓库中找不到,在构建的时候就会报错,提示jar包不存在等error信息,所以,一定要特别注意pom.xml文件。而且每个公司的项目不同,java代码也不同,而且有些构建依赖的jar包可以是通用的,但是有些jar包是java开发工程师写好的,然后使用maven命令上传到私有仓库中的,只满足本公司项目的需求!
  四、其他说明
  1、maven中央仓库的特性
  每个公司惯用的方式不同,本篇文章介绍的只是其中一个例子,不能涵盖所有情况,而且每个公司所开发的java项目也是不同的,有时候需要开发工程师开发好一些符合公司个性的jar包,然后上传到nexus,作为maven仓库的一部分。有时候需要从互联网下载第三方的jar包,上传到nexus,所以需要根据具体的需求,来配置maven仓库
  2、上传jar包
  想要将一些自建jar包或者第三方jar包上传到nexus,需要通过“3rd Party”进行,如下一个例子:
DSC00012.png

  点击“Select Artifact(s) to Upload”后,会弹出windows方框,选择需要上传的jar包,如下:
DSC00013.png

  选择之后,会出现如下图界面:
DSC00014.png

  然后选择“Add Artifact”,就会将选择的jar包同步到Artifacts下面的方框中,如下:
DSC00015.png

  然后选择“Upload Artifacts”,就上传了,上传成功,会弹出一个成功的界面,如下:
DSC00016.png

  3、查看上传的jar包
  上传完成之后,可以验证下是否已经成功了,到“3rd party”这个第三方Repository查看,如下:
DSC00017.png

  注:目录结构相信大家已经看出来是如何设置的了,就是在上传的时候,选择的“Group”、“Artifact”、“Version”。因为“Public Repositories”这个公用的Repositories是包含3rd party的,所以在“Public Repositories”下面也是可以查看到刚才上传的jar的。
  4、nexus 仓库某些目录介绍
  /nexus/sonatype-work/nexus/storage/             #项目中的各种jar包和项目快照等都放在 目录下,在这个目录下包括以下各种目录和存放相应文件。
  /nexus/sonatype-work/nexus/storage/central      #用于放置maven从中央仓库中下载下来的项目pom.xml中配置到的相关jar包;
  /nexus/sonatype-work/nexus/storage/thirdparty   #用于放置自己手动上传的第三方jar包
  /nexus/sonatype-work/nexus/storage/releases     #用于放置项目deploy后的发布版
  阿里云的私有maven仓库配置参考链接:https://yq.aliyun.com/articles/6059
  其他参考链接:http://snowolf.iteye.com/blog/1605811
  不足之处请多多指出!



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-562275-1-1.html 上篇帖子: Jenkins简介 下篇帖子: jenkins-基础操作
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表