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

[经验分享] 剑指架构师系列-持续集成之Maven+Nexus+Jenkins+git+Spring boot

[复制链接]

尚未签到

发表于 2017-3-3 08:46:44 | 显示全部楼层 |阅读模式
1、Nexus与Maven
  先说一下这个Maven是什么呢?大家都知道,Java社区发展的非常强大,封装各种功能的Jar包满天飞,那么如何才能方便的引入我们项目,为我所用呢?答案就是Maven,只需要粘贴个Jar包的地址,Maven就会自动到网上查找引入到你的项目中。不过首先你的下载个Maven,然后指定一下
  当下来的包包(jar)放到哪里。
  我的版本是apache-maven-3.2.1,找到conf里面的配置文件 settings.xml,瞅瞅有没有



<localRepository>E:/java_jar/maven_jar/repos</localRepository>

  然后你们包包从哪个地址当呢?问Nexus要吧。
  那么Nexus为何物?这叫私服。可以放你自己的jar包和第三方的jar包,这样整个组内就可以共享这些Jar包了。
  
  Nexus所有版本下载地址:http://www.sonatype.org/nexus/archived
  (1)下载安装
  解压后会在同级目录中,出现两个文件夹:nexus-oss-webapp-1.8.0和sonatype-work,前者包含了nexus的运行环境和应用程序,后者包含了你自己的配置和数据。



$ mkdir nexus
$ tar -xzvf /home/mazhi/nexus-2.7.0-06-bundle.tar.gz

  (2)启动



$ cd bin/
$ ./nexus
Usage: ./nexus { console | start | stop | restart | status | dump }
$ ./nexus start
  
  访问网址:http://ip地址:8081/nexus   默认用户名/密码:admin/admin123
  3rd party、Snapshots、Releases这三个,分别用来保存第三方jar、项目组内部的快照、项目组内部的发布版.
  
(3)nexus仓库中各目录介绍
  项目中的各种jar包和项目快照等都放在/nexus/sonatype-work/nexus/storage/目录下,在这个目录下包括以下各种目录和存放相应文件
/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和Nexus。
  首先要将下载下来的Maven集成到Eclipse中,如下:
DSC0000.png

  指定了Installations后,还需要指定User Settings,也就是自己Maven下的配置文件settings.xml。
  Eclipse中新建一个名为sample的Maven项目,使用Eclipse工具新建Maven项目,新建一个类CommonUtils.java,如下:



package org.mazhi.commons;
import java.text.SimpleDateFormat;
import java.util.Date;
public class CommonUtils {
public static String getDate(){
SimpleDateFormat   formatter   =   new   SimpleDateFormat   ("yyyy-MM-dd HH:mm:ss");      
Date   curDate   =   new   Date(System.currentTimeMillis());//获取当前时间      
String   str   =   formatter.format(curDate);   
return str;
}
}

  这是一个公共项目中的公共类,我们需要使用Maven自动发布构建到Nexus中,在工程项目下添加:



        <!-- 项目发布到远程仓库 -->
<distributionManagement>
<repository>
<id>nexus-releases</id>
<url>http://ip:端口/nexus/content/repositories/releases/</url>
</repository>
<snapshotRepository>
<id>nexus-snapshots</id>
<url>http://ip:端口/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>

  然后在settings.xml中添加如下配置:



<servers>
<server>
<id>nexus-releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>nexus-snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>

  在pom.xml文件上右键,Run As->Maven build,在Goals中填写deploy后执行
DSC0001.png

  看Eclipse console有Uploading日志输出时,看下Nexus,
DSC0002.png

  可以看到发布成功,其它的项目只需要引入<dependency>即可

2、Jenkins自动化部署项目
  这个Jenkins是干什么的呢?简单来说就是从项目版本管理git上拉代码,然后对代码进行编译,打成war包扔到环境里,就这么个事儿。好,我们来装一个。
  首先从官方上下载jenkins,http://mirrors.jenkins-ci.org/war/ 可以选择不同的版本。下载完成后放置在服务器某个目录下,cd到该目录下,执行:



java -jar jenkins.war
  jenkins内置一个jetty容器,默认使用8080端口,如果你的8080被占用了,请执行:



java -jar jenkins.war --httpPort=8081

  启动后的访问地址如下:





http://locahost:端口号/

    当然你也可以直接把war包放到tomcat目录下启动,这样jenkins就启动起来了。
  访问地址为:



http://locahost:端口号/jenkins  
DSC0003.png

  那么Jenkins如何拉版本库中的代码并进行编译部署呢?
  先到系统管理->系统设置里指定一下JDK与Git。如果没有Git选项,还需要到系统管理>>管理插件>>可选插件中搜索Git Plugin后安装。
DSC0004.png

  JDK要编译Java代码,当然需要知道用哪个版本的JDK进行编译了,而且也需要调用Git客户端来和版本库产生一些交互。
  我们的项目是Maven项目,还需要指定一下使用我们自己的Maven,如下:
DSC0005.png

  在部署时我们需要使用FTP或者SSH将jar/war包放到远程环境里,所以需要到系统管理>>管理插件>>可选插件中 搜索 Publish Over SSH 或者Publish Over FTP,
  然后到系统设置里进行设置。设置FTP,如下图。
DSC0006.png

  设置SSH,如下图。
DSC0007.png

  我们只需要选择FTP或SSH一种即可。
  选择新建>>构建一个Maven项目,我们需要指定这个任务执行的一系统动作。首先对Git进行一下设置。
DSC0008.png

  在这里指定了Git的项目地址(git@git.oschina.net:mazhimazh/sample.git)和从哪个分支(master)拉取代码进行编译。
  如果没有Git的可以使用git.oschina.net,与GitHub不同的是可以建立个人的私有项目。
  无论使用Windows、Linux还是Mac的用户需要安装一个Git客户端。为了每次提交本地代码时不输入用户名和密码,我们需要生成一对 Key(这里指密钥),然后才能通过加密的方式和服务器的代码库取得同步。
  到开始菜单,找到“Git Bash”,运行之,并执行以下命令:



$ ssh-keygen -t rsa -C "2500261120@qq.com"

  程序会提示您输入密钥的文件名,直接按回车即可。然后会要求你输入一个密码,将来在使用密钥的时候需要提供这个密码。可以输入,也可以不输入直接回车(无论输入还是不输入,都会要求你确认一次)。确认完毕后,程序将生成一对密钥存放在以下文件夹:



C:\Users\Administrator[这里替换成你的用户名]\.ssh

  密钥分成两个文件,一个私钥(id_rsa)、一个公钥(id_rsa.pub)。私钥保存在您的电脑上,公钥交项目负责人添加到服务器上。用户必须拥有与服务器公钥所配对的私钥,才能访问服务器上的代码库。
  将代码上传到git@OSC上时,首先要在Git@OSC上新建一个sample项目,https地址为:



https://git.oschina.net/mazhimazh/sample.git

  然后找到本地的sample项目,用Git Bash执行如下命令:  



$git init
Initialized empty Git repository in f:/eclipse_workspace/sample/.git/
$git remote add sp https://git.oschina.net/mazhimazh/sample.git
$ git remote -v
sp https://git.oschina.net/mazhimazh/sample.git (fetch)
sp https://git.oschina.net/mazhimazh/sample.git (push)

$git add --all
$git commit -m "upload all"
$git pull sp master
$git push sp master

  成功上传项目后就可以使用Jenkins来拉项目到本地了。
  然后需要使用Maven进行编译打包为jar,如下图。
   DSC0009.png
  其中的Goals and options中的值为clean install,也就相当于mvn clean与mvn install命令了。
  设置一下使用FTP或者SSH上传jenkins编译打包后的jar包部署到192.168.2.129(开发的内部测试服务器),设置如下:
DSC00010.png

DSC00011.png

  最后点击“立即构建”,等构建完成后,查看控制台输出信息,可以清楚的看到执行的各个步骤,如下:
DSC00012.png

  信息很多,再上一张关键图。
DSC00013.png

运维网声明 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-349462-1-1.html 上篇帖子: git 提交各种情况下的处理方式 下篇帖子: Jenkins Gitlab持续集成打包平台搭建
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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