Jenkins+Junit+Ant+Mercurial(hg)+Cobertura+Findbugs (搭建持续集成环境)


名词说明:

Jenkin :是一个开源项目,提供了一种易于使用的持续集成系统

Junit : java的测试框架

Ant : 基于java的构建工具

Mercurial :是一个跨平台的分布式版本控制软件

Cobertura :一种开源工具,它通过检测来测量测试覆盖率

FindBugs :是一个静态分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题

 

一.安装环境

Linux系统

二.安装准备

1.jenkins.war(最新稳定版本包下载地址:http://mirrors.jenkins-ci.org/war-stable/latest/jenkins.war)

2. apache-ant-1.9.1-bin.tar.gz cobertura-2.0.3-bin.tar.gz findbugs-2.0.2.tar.gz
下载地址:
1).ant[http://mirror.sdunix.com/apache//ant/binaries/apache-ant-1.9.2-bin.tar.gz]
2).cobertura[https://sourceforge.net/projects/cobertura/files/latest/download?source=files]
3).findbugs[http://prdownloads.sourceforge.net/findbugs/findbugs-2.0.2.tar.gz?download]
3. mercurial
1). 可以下载安装包安装
2). rat、centos系统也可直接使用yum install 命令安装,下面使用命令安装。   JENKINS_HOME 的目录:conf用于存放jenkins的配置文件

三.安装过程

1.jenkins

在linux设置JENKINS_HOME路径

例如:在当前用户目录(/home/jouken)下修改【.bash_profile

在最后添加:export JENKINS_HOME=/home/jouken/commoninstall/jenkins/conf[A4]

2.ant+cobertura+findbugs

    apache-ant-1.9.1-bin.tar.gz解压/home/jouken/commoninstall/文件夹;

       cobertura-2.0.3-bin.tar.gz解压/home/jouken/commoninstall/文件夹;

       findbugs-2.0.2.tar.gz解压/home/jouken/commoninstall/文件夹;

为PATH添加ant的bin路径,使ant命令能够全局使用。

 在当前用户目录(/home/jouken)下修改【.bash_profile

添加:

export ANT_HOME=/home/jouken/commoninstall/apache-ant-1.9.1

export PATH=$PATH:$ANT_HOME/bin

3.Mercurial

1)[安装]用root用户执行yum install mercurial,安装过程如果遇到判断则选择[y]即可.

2)[查找配置文件]使用rpm -ql mercurial | grep sample.hgrc 命令查找sample.hgrc文件路径

3)[复制配置文件]将simple.hgrc文件复制到当前用户目录(/home/jouken),改名为.hgrc

cp -rf /usr/share/doc/mercurial-1.4/sample.hgrc/home/jouken/.hgrc

4)[编辑配置文件]

vim .hgrc

找到# username = Joe User

并在下一行添加你的hg邮箱地址,例如下:

username = "jouken"

4.配置jenkins

1)进入到jenkins.war放置的目录,执行命令:java -jar jenkins.war

2)用浏览器访问:http://localhost:8080

3)为jenkins安装mercurial插件

3.1)系统管理->管理插件->可选插件->搜索:Mercurial Plugin->勾选[Mercurial Plugin]->点击[Download now and install after restart]按钮即可完成安装。

Jenkins+Junit+Ant+Mercurial(hg)+Cobertura+Findbugs (搭建持续集成环境)_第1张图片

3.2)查看[已安装]如下:(如果没有显示则手动重新启动jenkins即可)

Jenkins+Junit+Ant+Mercurial(hg)+Cobertura+Findbugs (搭建持续集成环境)_第2张图片

 

4)设置全局hg的用户名和密码

4.1)系统管理->Manage Credentials->Add Credentials[选择”Username with password”]->依次输入Username、password、Description的数值->点击[Save]按钮保存即可.

Jenkins+Junit+Ant+Mercurial(hg)+Cobertura+Findbugs (搭建持续集成环境)_第3张图片

5)安装emil插件

5.1)系统管理->管理插件->可选插件->搜索:Email Ext Recipients Column Plugin

->勾选[Email Ext Recipients Column Plugin]->点击[Download now and install after restart]按钮即可完成安装。

Jenkins+Junit+Ant+Mercurial(hg)+Cobertura+Findbugs (搭建持续集成环境)_第4张图片

5.2)查看[已安装]如下:(如果没有显示则手动重新启动jenkins即可)

Jenkins+Junit+Ant+Mercurial(hg)+Cobertura+Findbugs (搭建持续集成环境)_第5张图片

 

6)设置全局email邮箱账号

 6.1)配置邮件

系统管理->系统设置->邮件通知->输入[SMTP服务器、用户默认邮箱后缀],点击[高级]输入

[勾选(使用SMTP认证)、用户名、密码、勾选(使用SSL协议)、SMTP端口Reply-To Address字符集]。

输入以上信息,可以通过勾选[通过发送测试邮件测试配置]选项、输入收件箱邮箱号->点击[Testconfiguration]按钮测试,当看到”Email was successfully sent”提示信息时,说明邮件配置成功。

Jenkins+Junit+Ant+Mercurial(hg)+Cobertura+Findbugs (搭建持续集成环境)_第6张图片

 

6.2)设置默认收件箱信息

系统管理->系统设置->Extended E-mail Notification->填写Default Recipients[默认收件邮箱]。 (其他选项可以根据自己的情况和帮助信息填写)

Jenkins+Junit+Ant+Mercurial(hg)+Cobertura+Findbugs (搭建持续集成环境)_第7张图片

 

四.项目实战

1.新建项目

点击[新job]->输入[任务名称]、选择[构建一个自由风格的软件项目]->点击[OK]

Jenkins+Junit+Ant+Mercurial(hg)+Cobertura+Findbugs (搭建持续集成环境)_第8张图片

2.配置详细信息

1)填写[project名称、描述、勾选(丢弃旧的构建)、等]
2)
[源码管理]项,选择(Mercurial)单选项->填写[Repository URL]、[Credentials]项选择之前创建的hg账户. (其他选项可以根据自己的情况和帮助信息填写),示例如下:

Jenkins+Junit+Ant+Mercurial(hg)+Cobertura+Findbugs (搭建持续集成环境)_第9张图片

 

3)[构建触发器]中包含1.在其他项目构建完成后才执行构建 2. 定期构建(详见帮助信息)

Jenkins+Junit+Ant+Mercurial(hg)+Cobertura+Findbugs (搭建持续集成环境)_第10张图片

 

4)[构建]此项是执行测试命令的入口,可执行windows系统批处理命令、shell命令、执行ant命令等.

如下图显示[ant -f ci-unittest-build.xml]执行测试ant脚本和[zip -f unittest-report.zip report]将report目录下的测试报告文件打成zip包。


Jenkins+Junit+Ant+Mercurial(hg)+Cobertura+Findbugs (搭建持续集成环境)_第11张图片

 5)[构建后操作]可配置邮件信息和附件,发送邮件到指定的用户邮箱。(详见帮助信息)

Jenkins+Junit+Ant+Mercurial(hg)+Cobertura+Findbugs (搭建持续集成环境)_第12张图片

 

3.测试脚本的编写

 例子ant脚本[ci-unittest-build.xml]文件如下:

name="ci.test.examples"default="findbugs"basedir=".">

      

       name="src.dir"location="src"/>

      

       name="classes.dir"location="classes"/>

      

       name="cobertura.dir"location="../.."/>

      

       name="findbugs.dir"location="../../../findbugs-2.0.2/"/>

   

       name="instrumented.dir"location="instrumented"/>

      

    name="reports.dir"location="reports"/>

      

       name="reports.xml.dir"location="${reports.dir}/junit-xml"/>

   

             name="reports.html.dir" location="${reports.dir}/junit-html"/>

      

name="coverage.html.dir" location="${reports.dir}/cobertura-html"/>

   

name="findbugs.html.dir" location="${reports.dir}/findbugs-html"/>

       id="cobertura.classpath">

             dir="${cobertura.dir}">

                   name="cobertura*.jar"/>

                   name="lib/**/*.jar"/>

             

      

     

       id="findbugs.classpath">

             dir="${findbugs.dir}">

                   name="**/*.jar"/>

                   name="lib/findbugs-ant.jar"/>

             

      

      

       classpathref="cobertura.classpath"  resource="tasks.properties"/>

      

       name="init">

            dir="${classes.dir}"/>
             
dir="${instrumented.dir}"/>
             
dir="${reports.xml.dir}"/>
             
dir="${reports.html.dir}"/>
             
dir="${coverage.html.dir}"/>
             
dir="${findbugs.html.dir}"/>

      

       name="compile"depends="init">

             srcdir="${src.dir}"destdir="${classes.dir}"debug="on"

                           source="1.6"includeantruntime="on">

                   refid="cobertura.classpath"/>

             

      

      

       name="instrument"depends="init,compile">

             

             file="cobertura.ser"/>

             dir="${instrumented.dir}"/>
            

                   regex="org.apache.log4j.*"/>

                     dir="${classes.dir}">

                         

                         name="**/*.class"/>

                         name="**/*Test.class"/>

                   

             

      

      

         

       name="test"depends="init,compile">

              

              dir="${basedir}"printsummary="on" haltοnerrοr="off"haltonfailure="off"fork="on">

                    

                   location="${instrumented.dir}"/>

                   location="${classes.dir}"/>

                   

                   refid="cobertura.classpath"/>

                   

                   type="plain"usefile="off"/>

                   type="xml"/>

                   name="${testcase}" todir="${reports.xml.dir}"if="testcase"/>

                   

                   todir="${reports.xml.dir}"unless="testcase">

                         dir="${src.dir}">

                               name="**/*Test.java"/>

                         

                   

             

             

             todir="${reports.xml.dir}">

                   dir="${reports.xml.dir}">

                         name="TEST-*.xml"/>

                   

                   format="frames"todir="${reports.html.dir}"/>

             

      

       name="coverage-check">

             branchrate="34"totallinerate="100"/>

      

      name="alternate-coverage-report">

             

             destdir="${coverage.html.dir}">

                   dir="${src.dir}">

                         name="**/*.java"/>

                   

             

      

name="coverage"depends="compile,instrument,test,alternate-coverage-report"/>

      
"findbugs"classpathref="findbugs.classpath"
                                classname=
"edu.umd.cs.findbugs.anttask.FindBugsTask"/>

name="findbugs"depends="coverage">

             

             home="${findbugs.dir}"output="html"

                      outputFile="${findbugs.html.dir}/findbugs.html">

                   refid="findbugs.classpath"/>

                   path="${src.dir}"/>

                   location="${classes.dir}"/>

                                                                                           

      

4.构建项目

进入到该项目界面-点击[立即构建]即可

Jenkins+Junit+Ant+Mercurial(hg)+Cobertura+Findbugs (搭建持续集成环境)_第13张图片

 




你可能感兴趣的:(持续集成测试环境搭建)