maven+jenkins+nexus+git 持续集成

1、背景介绍

  随着互联网的普及,项目的规模不断扩大,持续集成变的至关重要。git

  当项目的规模变大,动辄几十个项目要维护的时候,就会给开发、部署、集成测试带来极大的挑战。spring

2、maven简单介绍

  maven主要用途为项目构建、依赖管理、项目信息管理。shell

  简单安装:下载maven http://maven.apache.org/download.cgi,配置环境变量 MAVEN_HOME为maven安装目录,PATH环境变量最后附加上";%MAVEN_HOME%\bin"。apache

  打开cmd,输入mvn -v。基本用法这里不过多介绍了。windows

  maven版本介绍:服务器

  一、快照版本(SNAPSHOT)和正式版本(RELEASE),若是是快照版本在编译打包时会自动去maven仓库上下载最新的版本,而若是是稳定版本,则不会从新下载。这也是一些项目中,定义了一些基础组件为稳定版本,在作过一些修改后没有升级版本号致使其余开发人员更新不到。一般解决办法为删除本地仓库中已有的稳定版本或者升级版本号。框架

  二、关于选择版本的问题,SNAPSHOT版本的库是一直在变化的是一个不稳定因素,RELEASE则为不可变化的,有些人会在在maven私服设置redeploy属性为true,这样会让RELEASE版本也不在稳定,这是一般没有问题,一旦由于版本问题引起事故就会给排查带来极大的麻烦。ssh

  maven生命周期简介:maven

  • 验证(validate) - 验证项目是否正确,全部必要的信息可用
  • 编译(compile) - 编译项目的源代码
  • 测试(test) - 使用合适的单元测试框架测试编译的源代码。这些测试不该该要求代码被打包或部署
  • 打包(package) - 采用编译的代码,并以其可分配格式(如JAR)进行打包。
  • 验证(verify) - 对集成测试的结果执行任何检查,以确保知足质量标准
  • 安装(install) - 将软件包安装到本地存储库中,用做本地其余项目的依赖项
  • 部署(deploy) - 在构建环境中完成,将最终的包复制到远程存储库以与其余开发人员和项目共享。

  针对不一样的生命周期,maven能够加入不一样的插件(自定义插件和类库中的插件)来达到特殊的功能。这个插件就让打包时,依赖和项目分离同事指定main方法,这种作法方便抽离公共依赖(对版本管理有一点要求)。svn

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<useUniqueVersions>false</useUniqueVersions>
<addClasspath>true</addClasspath>
<classpathPrefix>dependency/</classpathPrefix>
<mainClass>com.XXXX.XXXX.XXXX</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
 

  坐标介绍:

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.0.5.RELEASE</version>
</dependency>

 

  一、groupId:定义当前maven项目隶属实际项目。maven项目和实际项目不必定是一对一的关系。好比spring项目。

  二、artifactId:该元素定义项目中的一个模块。

  三、version:该元素定义相关的版本信息。

  四、还有一些其余属性就不一一列出了(如scope等)。

  那么这个依赖在本地仓库中位置为:本地仓库位置\groupId\artifactId\version。好比本地仓库位置\org\springframework\spring-core\4.0.5.RELEASE

  安装好maven 后须要修改对应的settings文件,这里就不介绍了。

3、maven 私服nexus

  一、maven仓库:

    1)本地仓库:一般在maven项目中没有传统的 lib\来存放依赖。当maven执行命令时,若是须要使用这些依赖,它会基于依赖坐标在本地仓库中查找依赖文件。

    2)远程仓库:一般一个项目须要依赖不少三方类库,可是咱们的本地仓库默认是空的,这个时候一般是须要一个远程仓库去下载这些依赖到本地仓库。

  经常使用的中央仓库:http://mvnrepository.com/http://maven.aliyun.com/nexus/content/groups/public/

    3)私服:私服是一种特殊的远程仓库,它一般架设在局域网内代理远程仓库。一些没法从远程仓库上下载到的依赖能够统一上传到私服上供项目组使用。

    

  二、私服(nexus)介绍

    1)  maven的私服有不少,本文介绍nexus。私服不是maven的核心概念,使用私服能够下降中央仓库的负荷、节省外网带宽、加速构建maven、部署本身的maven构件。

    2) 下载nexus https://www.sonatype.com/download-oss-sonatype windows版。版本可自行选择解压nexus-2.12.0-01-bundle.zip,另外一个不是必须的在启动时会自动生成。

    3) 找到安装目录D:\soft\nexus-2.12.0-01\bin\jsw\windows-x86-64以管理员身份运行start-nexus.bat,D:\soft\nexus-2.12.0-01\conf\nexus.properties能够修改启动端口等信息。

启动成功后访问localhost:8081/nexus。见到以下图:

 

    

、  4)默认登陆用户名密码admin/admin123 。nexus默认包含了group(仓库组)、host(宿主)、proxy(代理)和virtual(虚拟)。每一个仓库有一个policy,表示该仓库为release版本或snapshot版本。客户端会根据须要从仓库组中的不一样仓库去下载对应的依赖。

      画个图方便你们理解:

     

     安装好后nexus已经为咱们建立了一些默认的仓库,如release宿主仓库,咱们就能够经过最后的artifact upload上传jar包,也能够经过命令

     mvn deploy:deploy-file -DgroupId=坐标名-DartifactId=坐标名 -Dversion=版本 -Dpackaging=jar -Dfile=jar包位置 -Durl=http://localhost:8081/nexus/content/repositories/loan-release -DrepositoryId=仓库id

  

 

    让咱们看一下仓库组:右边的添加顺序决定了仓库的检索顺序,一般经常使用的仓库会配置在前面。

  

 

 

    修改本地settings配置,经过镜像的方式使nexus仓库组生效:

    

    <servers>
        <server>
            <id>nexus</id>
            <username>admin</username>
            <password>admin123</password>
        </server>
    </servers>

   <mirrors>
        <mirror>
            <id>nexus</id>
            <mirrorOf>*</mirrorOf>
            <name>Nexus Mirror.</name>
         <url>http://localhost:8081/nexus/content/groups/public/</url>
        </mirror>
    </mirrors>

    

  简单windows版的nexus就搭建好了。

4、jenkins持续构建

  一、jenkins的前身为hubson,它能够为咱们带来的主要功能以下:

    1)持续编译:当有代码提交时(svn或git),jenkins可配置为自动触发去编译新生成的代码。

    2)持续测试:如今大多项目都测试都使用JUnit之类的框架,jenkins能够在集成的过程当中运行这些测试案例并生成报告。

    3)持续部署:在完成集成后jenkins同时支持自动发布到指定环境。

  二、下载windows版本  https://jenkins.io/download/  直接安装便可,初始化过程当中咱们选择默认安装一下插件也能够后面自行添加,jenkins默认启动端口为8080可修改根目录下的jenkins.xml

  

  安装示意图,完成后咱们使用admin用户登陆。

 

   

 

    三、首先配置一些全局属性。点击系统管理->Global Tool Configuration,配置jdk,git(能够经过git version,where is git 查看安装目录),maven的安装目录。

    

    点击系统管理->管理插件,找到并安装maven插件

    安装publish over ssh插件(经过ssh的方式将项目部署到远程服务器),

 

    四、建立maven项目

      1)点击开始建立一个新任务。

      2)选中构建一个maven项目。

      

      3)选择源码管理中的git,Credentials为添加用户名密码,好比咱们使用gitlab时须要输入。

  

      4)找到build选项,输入clean package 即maven清除 打包命令,点击保存。(这里咱们就不配置自动部署了一般使用publish over ssh方式)

  

      5)点击构建按钮。

  

  红色状态为失败,蓝色为成功

  点击控制台输出能够看到本次编译的具体信息。

  

 

    构建完的项目在工做空间中,点击便可下载。

    

      6)自动部署有不少种形式这里并无配置,经常使用的有经过shell脚本和publish over ssh, 也能够在服务器上经过wget方式取到工做空间中的jar或者war进行部署。

5、总结

   本文为一个简单入门,不管是maven、jenkins、nexus、git都不是能够一下学会的,都须要更多的学习和练习才能熟练使用。

相关文章
相关标签/搜索