Jenkins自动化集成

1.Jenkins 是一个可扩展的持续集成引擎。

主要用于:

Ø  持续、自动地构建/测试软件项目。

Ø  监控一些定时执行的任务。

Jenkins拥有的特性包括:

Ø  易于安装-只要把jenkins.war部署到servlet容器,不需要数据库支持。

Ø  易于配置-所有配置都是通过其提供的web界面实现。

Ø  集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知。

Ø  生成JUnit/TestNG测试报告。

Ø  分布式构建支持Jenkins能够让多台计算机一起构建/测试。

Ø  文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。

Ø  插件支持:支持扩展插件,你可以开发适合自己团队使用的工具。

 

部署一个CI系统需要的最低要求是,一个可获取的源代码的仓库,一个包含构建脚本的项目。

CI系统的基本机构:

 

该系统的各个组成部分是按如下顺序来发挥作用的:

1. 开发者检入代码到源代码仓库。

2. CI系统会为每一个项目创建了一个单独的工作区。当预设或请求一次新的构建时,它将把源代码仓库的源码存放到对应的工作区。

3. CI系统会在对应的工作区内执行构建过程。

4. (任务配置项如果存在)构建完成后,CI系统会在一个新的构件中执行定义的一套测试。完成后触发通知(Email,RSS等等)给相关的当事人。

5. (任务配置项配置如果存在)如果构建成功,这个构件会被打包并转移到一个部署目标(如应用服务器)或存储为软件仓库中的一个新版本。软件仓库可以是CI系统的一部分,也可以是一个外部的仓库,诸如一个文件服务器或者像Java.net、 SourceForge之类的网站。

6. CI系统通常会根据请求发起相应的操作,诸如即时构建、生成报告,或者检索一些构建好的构件。

 

2      Eclipse中TFS插件

首先下载TFS插件:

下载地址是:http://www.microsoft.com/zh-CN/download/details.aspx?id=40785

点击Eclispe\Help\Install new Sofeware的菜单,添加下载仓库,选择下载好的插件进行安装:

接下来就可以很顺畅的点下一步了,安装完之后重启Eclipse。

重启后的Eclipse,在Windows->Preferences->Team里,你就可以看到Team Fundation Server这一项了。

打开show views,在Windows->Show View->Others里。弹出如下窗口,选择Team Fundation Server下的Team Explorer。

 

打开如下图所示的视图,然后点击新建连接按钮,添加服务器地址,选择自己的项目。步骤如下图所示:

3      Maven插件

3.1   CheckStyle 代码风格检查插件

在maven中一个名为maven-checkstyle-plugin的插件,用于执行CheckStyle task。下面是一个简单的配置。

我们定义了在maven lifecycle的validate阶段执行check task,并且如果发现有违反标准的情况就会fail当前的build。

maven-checkstyle-plugin内置了4种规范.

·        config/sun_checks.xml

·        config/maven_checks.xml

·        config/turbine_checks.xml

·        config/avalon_checks.xml

其中sun_checks.xml为默认值。如果想要使用其他三种规范,则只需配置configuration。

我们可以使用默认的规范文件,当然也支持自定义。如果想启用自定义的规范文件,则依旧是修改configuration,指向你的文件地址。

checkstyle的详细结果信息被存放在target/checkstyle-result.xml中。

跳过对指定文件的某些检查

如果对于指定文件检查出了一些问题,但是你想忽略它,则可以使用suppression。

方法是建立一个checkstyle-suppressions.xml文件。其中加入下述内容


<?xmlversion="1.0"?>

<!DOCTYPEsuppressions PUBLIC

        "-//Puppy Crawl//DTD Suppressions1.0//EN"

       "http://www.puppycrawl.com/dtds/suppressions_1_0.dtd">

<suppressions>

    <suppresschecks="LineLengthCheck"

             files="SessionMessageSource.java"

              />

</suppressions>


然后配置maven-checkstyel-plugin设置suppressionsLocation。


<plugin>

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

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

    <version>2.13</version>

    <configuration>       <configLocation>${basedir}/src/config/custom_checkstyle.xml</configLocation>        <suppressionsLocation>${basedir}/src/config/checkstyle-suppressions.xml</suppressionsLocation>

    </configuration>

    <executions>

        <execution>

            <id>checkstyle</id>

            <phase>validate</phase>

            <goals>

                <goal>check</goal>

            </goals>

            <configuration>

               <failOnViolation>true</failOnViolation>

            </configuration>

        </execution>

    </executions>

</plugin>


3.2   FindBugs静态分析插件

在maven中一个名为findbugs-maven-plugin的插件,用于执行package task。下面是一个简单的配置。

可以添加findbugs检查规则文件来使用用户自己的规则:


<configuration> 

 <excludeFilterFile>findbugs-exclude.xml</excludeFilterFile> 

 <includeFilterFile>findbugs-include.xml</includeFilterFile> 

</configuration> 


3.3   emma用于检测和报告 JAVA 代码覆盖率插件

EMMA 是一个开源、面向 Java 程序测试覆盖率收集和报告工具。它通过对编译后的 Java 字节码文件进行插装,在测试执行过程中收集覆盖率信息,并通过支持多种报表格式对覆盖率结果进行展示。 EMMA 所使用的字节码插装不仅保证 EMMA 不会给源代码带来“脏代码”,还确保 EMMA 摆脱了源代码的束缚,这一特点使 EMMA 应用于功能测试成为了可能。

在Maven中的使用:

直接运行mvnemma:emma,即可。maven集成emma,需要两个插件,maven-surefire-plugin和emma-maven-plugin,如果之前没有安装,那么maven会自动下载这两个插件。emma依赖于surefire的配置,默认执行src/test/java的junit测试。

4      Jenkins安装

安装有两种方式:

1、  下载Jenkins安装包安装,安装后自动创建windows服务,默认使用的端口号是8080,如果需要修改,打开安装目录下的jenkins.xml文件,修改

<arguments>-Xrs-Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar"%BASE%\jenkins.war" --httpPort=8081</arguments>

      启动jenkins服务,打开http://localhost:8081/即可看到jenkins操作页面。

2、  下载war包,宿主到web服务器,此指南选择tomcat。

http://ftp-chi.osuosl.org/pub/jenkins/war/1.590/jenkins.war下载war包,放到tomcat的webapps下,启动tomcat,然后运行http://localhost:8080/jenkins。

可以看到如下操作页面:

5      Jenkins配置

5.1   Jenkins运行路径设置

Jenkins运行时,需要有个运行目录,此处可以通过添加一个全局路径JENKINS_HOME来修改Jenkins的运行目录,默认的是“当前用户下\.jenkins”,设置Jenkins的运行路径(例如设置为D:\Jenkins)。

 

 

 

 

 

5.2   Jenkins系统管理

在Jenkins首页面,左侧菜单可以看到系统管理页面。

 

 

5.2.1  Jenkins系统设置

进入【系统管理\系统设置】,进入Jenkins的系统配置页面。此处可以默认。

5.2.1.1 设置jdk及maven

如果本机没有已经安装好,可以选择自动安装。

5.2.2  源代码管理配置

Jenkins默认可以使用CVS,Subversion(SVN),如果想使用其他的源代码管理配置,需要安装其插件。本章使用TFS源代码管理,所以需要安装TFS的插件。

5.2.2.1 插件安装

进入【系统设置\插件管理】:添加、删除、禁用或启用Jenkins功能扩展插件。

在可选插件Tab页,找到tfs的插件,选中,然后点击直接安装按钮下载安装。

安装时,可能会出现错误提示,直接忽略即可。

5.2.2.2 配置

返回【系统管理\系统设置】,则就能看到TFS的设置段。

找到本机tf.exe所在路径,填写到上图的tf输入框。

配置修改后,别忘了保存。

5.2.3  邮件通知配置

可以统一设置发送邮件的邮件地址,以及邮件通知相关的内容。

 

也可以安装Email-ext Plugin插件,进行更复杂的邮件通知配置。下面即是安装了Email-ext Plugin插件后在系统设置中看到的配置内容。

5.2.4  发布配置

如果想构建完后发布到web服务器,则需要安装Deploy插件,安装方式和tfs一样。(

Deploy tocontainer Plugin

 

5.3   权限设置

首先安装角色权限的插件:

然后进入【系统管理\Configure Global Security】可以进行权限设置,选择基于Role的权限配置。

 

在【系统管理\管理用户】中创建新的用户,一定要配置好邮箱。

在【系统管理\Manage and Assign Roles\Manage Roles】中创建新的角色,并分配权限:

在【系统管理\Manage and Assign Roles\ Assign Roles】中给角色分配用户:

这样就完成基于角色的权限分配了。

我们系统暂时定了三个角色:管理员,项目经理,普通开发人员

管理员:拥有所有的权限

项目经理:可以创建修改运行构建计划,查看构建结果和报表

开发人员:可以查看构建的结果和报表

5.4   报表配置

5.4.1  CheckStyle报表

在[job\${Project}\配置\增加构建后的步骤]中配置CheckStyle的结果文件:

报表展示的样子,其中[Configure]可以配置报表的样子:

5.4.2  FindBugs报表

在[job\${Project}\配置\增加构建后的步骤]中配置FindBugs的结果文件:

报表展示的样子,其中[Configure]可以配置报表的样子:

5.4.3  代码覆盖率报表

在[job\${Project}\配置\增加构建后的步骤]中配置Emma的结果文件:

报表展示的样子:

报表展示的样子:

5.4.4  单元测试结果报表

在[job\${Project}\配置\增加构建后的步骤]中配置JUnit的结果文件:

 

报表展示的样子,其中[Configure]可以配置报表的样子:

6      任务构建

6.1   任务创建

点击左侧新建菜单,进行新任务的创建。

以自由风格的构建任务为例描述。

maven项目的任务和自由风格类型的类似,只有稍微差别。构建时多了一个构建前和构建后的设置。

6.2   构建任务配置

6.2.1  源代码管理配置

可以有多个源代码管理选择,此处选择TFS源代码管理。

 

6.2.2  构建触发器

触发远程构建(例如,使用脚本):

Build after other projects are bulit:指定的项目完成构建后,触发此项目的构建。

Build periodically :此选项仅仅通知Jenkins按指定的频率对项目进行构建,而不管SCM是否有变化。如果想在这个Job中运行一些测试用例的话,它就很有帮助。

Poll SCM :这是CI 系统中常见的选项。当您选择此选项,您可以指定一个定时作业表达式来定义Jenkins每隔多久检查一下您源代码仓库的变化。如果发现变化,就执行一次构建。例如,表达式中填写0,15,30,45 * * * *将使Jenkins每隔15分钟就检查一次您源码仓库的变化。

Maven类型的构建任务的构建触发器多了一个选项。

 

6.2.3  构建配置

可以增加多个构建步骤,此节以Maven为例。

Maven类型的构建任务多了一个Pre-buildSteps和一个Post-build Steps的设置,且只有一个构建步骤。默认是maven构建的设置。

6.2.4  构建后操作

构建后,还可以执行一些操作,比如发送邮件,创建标签,发布war/ear到容器(web服务器)。

 

6.2.4.1 发布到容器(web服务器)

可以发布到多个服务器,点Add container就可以添加发布的容器

注:如果要发布到tomcat容器,需要提供有权限的用户名密码,可以修改tomcat的配置文件conf\tomcat-users.xml。

6.2.4.2 邮件通知

构建完毕后,还可以发送邮件通知。

Jenkins自带邮件通知

1、Jenkins自带的邮件通知比较简单

2、Emai-extplugin

插件安装完后,在任务配置中,可以添加的构建后操作就多了一项。

7      参考