Jenkins CI服务器搭建及Maven私服Nexus

 

Jenkins CI服务器搭建及Maven私服Nexus

 

 

一:Jenkins持续集成(CI1

1.1Jenkins简介及特性1

1.2Jenkins安装1

1.3Jenkins配置1

1.4Jenkins插件checkstylefindbug安装1

1.5Jenkins自动部署1

 

二:Maven私服Sonatype Nexus1

2.1Nexus简介1

2.2Nexus安装1

2.3:配置1

 

 

 

 

一:Jenkins持续集成(CI

1.1Jenkins简介及特性

1、只维护一个源码仓库

2、自动化build

3、让build自行测试

4、每人每天都要向mainline提交代码

5、每次提交都应在集成计算机上重新构建mainline

6、保持快速build

7、在模拟生产环境中进行测试

8、让每个人都能轻易获得最新的可执行文件

9、每个人都能看到进度

10、自动化部署

1.2Jenkins安装

1、 Jenkins 下载

Jenkins 下载网址:http://jenkins-ci.org/

2、 Jenkins 安装

(1) 安装JDK

解压下载的JDK:tar zxvf jdk-7u55-linux-x64.gz

/home/admin下面:cp -r jdk1.7.0_55/ /opt/java7

设置环境变量:

修改/etc/profile文件

export JAVA_HOME=/opt/java7/jdk1.7.0_55

export JRE_HOME=$JAVA_HOME/jre

export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH

export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

使环境变量生效

# source /etc/profile

    (2) 部署安装Tomcat

Tomcat下载:http://tomcat.apache.org/download-70.cgi

Tomcat安装:

a) 解压

# tar zxvf apache-tomcat-7.0.54.zip

b) 移动到其他目录

# mv apache-tomcat-7.0.55 /opt/tomcat-ci

(3)Linux 搭建安装Maven

Maven下载:apache-maven-3.2.1-bin.tar.gz

安装:

#tar -zxvf apache-maven-3.2.1-bin.tar.gz

#mv apache-maven-3.2.1 /opt/maven

#vim /etc/profile

添加下面内容:

#maven
M2_HOME=/opt/maven/apache-maven-3.2.1
PATH=$PATH:$M2_HOME/bin
export M2_HOME PATH

然后使环境变量生效:

#source /etc/profile

输入#mvn -v验证是否成功。

(4) 拷贝下载的 jenkins.war 到 tomcat的webapps目录下:

sudo cp jenkins.war /opt/tomcat-ci/apache-tomcat-7.0.54/webapps/

5 启动Tomcat服务

# cd /opt/tomcat-ci/apache-tomcat-7.0.54/bin

# ./startup.sh

 

Jenkins 验证

在浏览器里,输入网址: http://localhost:8080/jenkins/ 显示下面界面:

 

 

1.3:配置

1、系统配置

在系统配置里面配置好相关环境,有如下:

JDK:

Maven:

保存:

2、新建JOB(工程)

保存,就跳到该job(om)的配置管理了,把一下相关配置。

1、构建天数

2、源码管理

项目svn路径,首次使用的时候,系统会提示输入SVN账号密码,我这已经保存了账号这个就不演示了。

 

 

3、构建配置

 

下面还有邮件告警,不使用直接保存即可。

4、进入job,构建项目

点击构建进度条,进入构建详细页面,点击Console Output

直到。。。

 

1.3Jenkins 插件checkstylefindbug安装

Checkstyle安装:

 

  1、在JOB配置中勾选,可以在左侧导航显示

 

2、Checkstyle安装:系统管理——》插件管理

 

3、重启

4、配置项目pom.xml文件

<checkstyle.config.location>/opt/google-checkstyle.xml</checkstyle.config.location>

<plugin>  

                <groupId>org.apache.maven.plugins</groupId>  

                <artifactId>maven-checkstyle-plugin</artifactId>  

                <version>2.9.1</version>  

            </plugin>  

 

5、在job中配置

6、构建项目,验证

 

到这步就能看到checkstyle信息完成。

 

FindBug安装:

1、FindBug安装:系统管理——》插件管理

安装和checkstyle一样,完成重启

2、配置pom.xml

<build>

<plugins>

..

<plugin>

              <groupId>org.codehaus.mojo</groupId>

              <artifactId>findbugs-maven-plugin</artifactId>

<version>3.0.0</version>

              <configuration>

                  <!-- <configLocation>${basedir}/springside-findbugs.xml</configLocation> -->

                  <threshold>High</threshold>

                  <effort>Default</effort>

                  <findbugsXmlOutput>true</findbugsXmlOutput>

                   <!-- findbugs xml输出路径-->         <findbugsXmlOutputDirectory>target/site</findbugsXmlOutputDirectory>

              </configuration>

           </plugin>

..

<plugins>

</build>

3、验证

 

1.4Jenkins自动部署

1、项目管理 --> 插件管理 -->选择可选插件--> 搜索 deploy

 

Deploy to container Plugin 

版本有些版本可能插件名字是:Deploy Plugin

安装就可以了。安装如图:

这个插件的作用 就是 当项目做构建 无误 的时候,自动上传项目到指定的服务器上。我们这里是使用Tomcat

2、因为自动部署需要登录tomcat权限,所以修改 tomcat 目录下的 conf 下的 tomcat-user.xml  添加:

<role rolename="manager-gui"/>

  <role rolename="manager-script"/>

  <role rolename="manager-jmx"/>

  <role rolename="manager-status"/>

<role rolename="admin-gui"/>

<user password="tomcat" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-gui" username="tomcat"/>

 

3、在项目job配置中配置远程tomcat服务器连接

 

到此完成构建的时候上传到了 tomcat 的服务器下

 

 

 

 

 

 

 

二:Maven私服Sonatype Nexus

2.1Nexus简介

Nexus 是Maven仓库管理器,如果你使用Maven,你可以从Maven中央仓库 下载所需要的构件(artifact),但这通常不是一个好的做法,你应该在本地架设一个Maven仓库服务器,在代理远程仓库的同时维护本地仓库,以节省带宽和时间,Nexus就可以满足这样的需要。此外,他还提供了强大的仓库管理功能,构件搜索功能,它基于REST,友好的UI是一个extjsREST客户端,它占用较少的内存,基于简单文件系统而非数据库。这些优点使其日趋成为最流行的Maven仓库管理器。

2.2Nexus安装

1、下载      我们可以在nexus的官网

上找到它的相关介绍,下载地址是: http://nexus.sonatype.org

,在这里可以找到最新的版本,如果需要以前的版本,在官网上应该也可以找到下载地址。我下载的是:nexus-oss-webapp-1.8.0-bundle.tar.gz

。关于Nexus的详细使用方法可以参照:Repository Management with Nexus

2、安装      

解压下载的文件:      

# tar xzvf nexus-oss-webapp-1.8.0-bundle.tar.gz      

解压后会在同级目录中,出现两个文件夹:nexus-oss-webapp-1.8.0sonatype-work,前者包含了nexus的运行环境和应用程序,后者包含了你自己的配置和数据。     

3、启动nexus      

在上面的提到,nexus的运行环境在nexus-oss-webapp-1.8.0目录,下面就进入这个目录启动:      #cd nexus-oss-webapp-1.8.0/bin/jsw/linux-x86-64/      

在这个目录下包含了一个文件夹和三个文件:libnexusplatformwrapper,其中nexus就是启动命令。     

进入bin目录,查看nexus是否启动

 

# ./nexus

执行上面的命令,可以得到nexus命令的用法提示:start 命令启动,stop命令停止。

 

下面启动nexus:      

   

从控制台输出可以看到Nexus已经启动成功,有时候不一定起来了,验证一下

 

 

 

我们可以通过log文件查看更详细的信息:

# tail -f wrapper.log      

log中可以看到nexus默认监听的端口是8081

 

访问Nexus :http://192.168.1.159:8081/nexus

 

 

在左边菜单栏里选择Repositories,然后会出现右边的画面,右边上半部分是列出来的repository,黑体字是类型为group的repository. 这里简单介绍下几种repository的类型:

· hosted,本地仓库,通常我们会部署自己的构件到这一类型的仓库。比如公司的第二方库。

· proxy,代理仓库,它们被用来代理远程的公共仓库,如maven中央仓库。

· group,仓库组,用来合并多个hosted/proxy仓库,当你的项目希望在多个repository使用资源时就不需要多次引用了,只需要引用一个group即可。

 

类型为hosted的为本地仓库,Nexus预定义了3个本地仓库,分别是Releases, Snapshots, 3rd Party. 分别讲一下这三个预置的仓库都是做什么用的:

· Releases: 这里存放我们自己项目中发布的构建, 通常是Release版本的, 比如我们自己做了一个FTP Server的项目, 生成的构件为ftpserver.war, 我们就可以把这个构建发布到Nexus的Releases本地仓库. 关于符合发布后面会有介绍.

· Snapshots: 这个仓库非常的有用, 它的目的是让我们可以发布那些非release版本, 非稳定版本, 比如我们在trunk下开发一个项目,在正式release之前你可能需要临时发布一个版本给你的同伴使用, 因为你的同伴正在依赖你的模块开发, 那么这个时候我们就可以发布Snapshot版本到这个仓库, 你的同伴就可以通过简单的命令来获取和使用这个临时版本.

· 3rd Party: 顾名思义, 第三方库, 你可能会问不是有中央仓库来管理第三方库, 这里的是指可以让你添加自己的第三方库, 比如有些构件在中央仓库是不存在的. 比如你在中央仓库找不到Oracle 的JDBC驱动, 这个时候我们就需要自己添加到3rd party仓库.

 

仓库组的概念是Maven没有的,通过前面介绍可以了解到, 我们可以建立多个proxy代理仓库,hosted本地仓库, 如果没有仓库组的概念,我们如果需要引用这些仓库的是时候需要一一加入到我们的setting.xml里面去, 有了仓库的组的概念, 我们只需要做一次引用就可以了,把我们需要的仓库加入到仓库组即可,像我们会使用url:

<url>http://127.0.0.1:8081/nexus/content/groups/public/</url>       

 

 

2.3:配置

1要管理Nexus,你首先需要以管理员身份登陆,点击界面右上角的login,输入默认的登录名和密码:admin/admin123,登陆成功后,你会看到左边的导航栏增加了很多内容

这里,可以管理仓库,配置Nexus系统,管理任务,管理用户,角色,权限,查看系统的RSS源,管理及查看系统日志,等等。你会看到Nexus的功能十分丰富和强大,本文,笔者只介绍一些最基本的管理和操作。

点击Repositories将会看到如下界面,其中红色框的三个库是我们配置自己maven的主要原因

 

2、打开以下三个代理仓库的自动下载功能,Nexus默认是关闭的

 

打开下载设置Download Remote Indexes 为 True

 

3、公共仓库聚合配置

 

保存配置。

 

5、配置MavenNexus的之间关系。

 

build构建部署构件到Nexuspom.xml文件中添加:

 

<project>

...

<distributionManagement>    

  <repository>    

    <id>nexus-releases</id>    

      <name>Nexus Release Repository</name>    

     <url>http://192.168.1.159:8081/nexus/content/repositories/releases/</url>    

  </repository>    

  <snapshotRepository>    

    <id>nexus-snapshots</id>    

    <name>Nexus Snapshot Repository</name>    

    <url>http://192.168.1.159:8081/nexus/content/repositories/snapshots/</url>    

  </snapshotRepository>    

</distributionManagement>

...

</project>

 

 

 

添加Maven setting.xml文件:

 

<!-- 上传构建到nexus时候需要登录权限 -->

<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>

 

<!-- 配置Nexus仓库镜像 -->

 

<mirros>

...

 <mirror> 

      <id>nexus-mirror</id>

  <name>Nexus Public Mirror</name>

  <url>http://192.168.1.159:8081/nexus/content/groups/public</url>

  <mirrorOf>central</mirrorOf>

 </mirror>

...

  </mirrors>

 

<!-- 配置远程仓库-->

<profiles>

<profile>

    <id>nexus-profile</id>

    <activation>

        <jdk>[1.4,1.7]</jdk>

    </activation>

   <repositories>

        <repository>

            <id>nexus</id>

            <name>local private nexus</name>

            <!--<url>http://maven.oschina.net/content/groups/public/</url>-->

<url>http://192.168.1.159:8081/nexus/content/groups/public</url>

            <releases>

                <enabled>true</enabled>

            </releases>

            <snapshots>

                <enabled>false</enabled>

            </snapshots>

        </repository>

    </repositories>

 

    <pluginRepositories>

        <pluginRepository>

            <id>nexus</id>

            <name>local private nexus</name>

            <!--<url>http://maven.oschina.net/content/groups/public/</url>-->

<url>http://192.168.1.159:8081/nexus/content/groups/public</url>

            <releases>

                <enabled>true</enabled>

            </releases>

            <snapshots>

                <enabled>false</enabled>

            </snapshots>

        </pluginRepository>

    </pluginRepositories>

  </profile>

</profiles>

 

 

<!-- 激活nexus-profile -->

<activeProfiles>  

  <activeProfile>nexus-profile</activeProfile>  

</activeProfiles>  

 

 

到这里配置结束,测试 构建上传。在eclipse中使用maven deploy命令

控制台:

仓库:

 

6、Eclipse本地仓库不存在的jar在构建过程通过Nexus自动下载jar

 

7、手动上传外部第三方jar。

 

有些时候我们需要部署构件到Nexus的3rd party, 比如我们在中央仓库找不到我们需要的构件, 我们可以通过Nexus的UI来上传构件:

点击左边菜单栏的 Repositories, 然后点击右边界面的3rd party, 选择界面下方的Artifact Upload, 这个时候出现以下界面:

 

 

Group: 、Artifact:、Version:,与pom.xml中的版本信息一一对应,选择select artifact jar文件)提交即可。在该仓库中即可看到jar包。

上传构件需要两个步骤,一个是定义文件的上传,再就是构件的实体文件. 

第一部分定义文件可以是POM文件, 这也是比较推荐的方式, 如果没有pom文件,可以选择以参数的形式输入.第二部分是上传构件的实体文件,这里简单说一下Classifier和Extension, 这两个都是选填相, Classifier用来区别同功能的构件用于不同的场景, 比如这个构件是分别针对JDK14和JDK15做了2个功能一样的Jar, 这个时候你就需要指定这个构件的Classifier为JDK14还是JDK15. Extension是指扩展名,如果不提供,那么会自动取这个构件的Packaging Type作为扩展名, 比如 ear, jar, war 等等. (Packaging Type是在第一步中通过pom文件或者手工输入得到的)刚才说了3rd party的部署, 关于releases 和 snapshots的UI部署也是一样的操作过程.我们之前也讲过, 这里的releases和snapshots是用来部署我们自己的项目构件的, 通过UI部署是可以,但是不是最高效的, 我们可以通过配置Maven来自动部署我们的项目构件,这也是我们建立自己的仓库的一个非常重要的原因, 下面就让我们看看如何配置:首先需要在POM文件中加入以下代码(参考上面配置部分,pom.xml配置远程仓库地址:

<project>    
…    

<distributionManagement>

<repository> 

<id> nexus-releases</id> 

<name> Nexus Release Repository</name> 

<url>http://192.168.1.159:8081/nexus/content/groups/public</url>

</repository>      

<snapshotRepository>      

<id> nexus-snapshots</id>       

<name> Nexus Snapshot Repository</name>   

<url>http://192.168.1.159:8081/nexus/content/groups/public</url>     </snapshotRepository>  

</distributionManagement>    
…    

</project>  

 

8、验证

8.1、打包

job配置的Goals and options中使用:  install

8.2、发布版本到nexus

job配置的Goals and options中使用:  deploy

 

 

 

<!--EndFragment-->

你可能感兴趣的:(Jenkins)