一、背景介绍
当前项目中,存在问题
■ 代码风格各异,同时缺少必要代码注释
■ 常出现空指针类似的基础bug
■ 代码单元测试缺失,测试场景覆盖不大
■ 重复代码大量出现
■ 转测试后,基础用例需要大量人力去验证
■ 其他:缺少性能测试
导致后果
■ 他人阅读代码困难,后期维护成本增加
■ 代码质量不高,后期维护成本增加
■ 开发成本增加,后期维护成本增加
■ 测试成本明显增加
因此需要一个持续代码集成,能够让开发或测试减少成本,提高质量工具,而jenkins正好可以与CI插件集成起来,实现这些功能。
二、解决方案
■ 代码风格各异,通过统一checkstyle样式来检查
■ 常出现空指针类似的基础bug,可以通过findbugs静态检查
■ 多余if或者try catch,可以通过pmd检查
■ 单元测试用例测试功能结果,可以通过junit报告检查
■ 大量重复代码,可以通过duplicate code报告来检查
■ 测试用例覆盖度,能够通过clover来检查
■ 基础功能,可以通过selenium自动化测试
■ 性能测试,可以通过jmeter来完成
虽然项目人员能够自己使用这些工具,完善代码,提高质量,但是却不方便项目统一管理。
而Jenkins能够集成这些插件,做到统一管理,解决项目问题。
Jenkins,之前叫做Hudson,是基于Java开发的一种持续集成工具,用于监控秩序重复的工作。
主要包括:
1、持续的软件版本发布/测试项目。
2、监控外部调用执行的工作。
Jenkins能够集成各式插件,如常用CI插件:deploy,junit,findbugs,pmd,checkstyle,clover, duplicate code,jmeter,selenium等,
而这些工具正好可以解决项目存在一些问题。
三、实施方案
jenkins上CI插件安装
■ 手动安装
第一步,查询需要插件名称
https://wiki.jenkins-ci.org/display/JENKINS/Plugins
第二步,查询插件是否依赖其他插件
第三步,进入插件下载页面http://updates.jenkins-ci.org/download/plugins/?C=N;O=D,下载插件
第四步,将插件放到
${jenkins安装目录}/jenkins_home/plugins,手动重启服务。
即进去${jenkins安装目录}/tomcat7/bin,使用shutdown.sh与startup.sh关闭或者启动jenkins服务。
■ jenkins管理平台安装
第一步,进入jenkins管理平台,点击登录。(第一个注册的即为管理员)
第二步,点击左边菜单系统管理,在弹出页面中选择管理插件
第三步,点击可选插件,找到需要安装插件
勾选安装后重启或者先下载重启后再安装,也可以进入命令行手动重启jenkins。
jenkins上CI插件集成
Deploy插件主要作用:打包发布
第一步:下载插件并安装插件
下载weblogic-deployer-plugin.hpi(因为我们用的是weblogic服务器,其他tomcat,apache,jboss下载deploy.hpi插件)与依赖插件放到${jenkins安装目录}/jenkins_home/plugins目录,重启服务
第二步:项目JOB中配置构建信息
junit插件主要作用:单元测试,测试代码功能
第一步:下载插件并安装插件
下载javatest-report.hpi与依赖插件放到${jenkins安装目录}/jenkins_home/plugins目录,重启服务
第二步:项目JOB中配置构建信息
第三步:项目构建完成后,可以在刚才构建的buildID下面看到本次构建生成的junit报告信息
findbugs插件主要作用:静态代码检查,发现常见代码问题
第一步:下载插件并安装插件
下载findbugs.phi与依赖插件放到${jenkins安装目录}/jenkins_home/plugins目录,重启服务
第二步:项目JOB中配置构建信息
第三步:项目构建完成后,可以在刚才构建的buildID下面看到本次构建生成的findbugs报告信息
pmd插件主要作用:静态代码检查,发现常见代码问题,与findbugs类似
第一步:下载插件并安装插件
下载pmd.phi与依赖插件放到${jenkins安装目录}/jenkins_home/plugins目录,重启服务
第二步:项目JOB中配置构建信息
第三步:项目构建完成后,可以在刚才构建的buildID下面看到本次构建生成的pmd报告信息
checkstyle插件主要作用:检查代码风格样式
第一步:下载插件并安装插件
下载checkstyle.phi与依赖插件放到${jenkins安装目录}/jenkins_home/plugins目录,重启服务
第二步:项目JOB中配置构建信息
第三步:项目构建完成后,可以在刚才构建的buildID下面看到本次构建生成的checkstyle报告信息
clover插件主要作用:检查代码单元测试的覆盖率,主要指标:行覆盖率,分支覆盖率,方法覆盖率
第一步:下载插件并安装插件
下载checkstyle.phi与依赖插件放到${jenkins安装目录}/jenkins_home/plugins目录,重启服务(clover有收费和试用)
第二步:项目工程配置JOB中配置构建信息
<plugin>
<groupId>com.atlassian.maven.plugins</groupId>
<artifactId>maven-clover2-plugin</artifactId>
<version>3.1.8</version>
<configuration>
<generateXml>true</generateXml>
</configuration>
</plugin>
duplicate code插件主要作用:检查代码中重复代码块的情况
第一步:下载插件并安装插件
下载dry.phi与依赖插件放到${jenkins安装目录}/jenkins_home/plugins目录,重启服务
第二步:项目工程配置JOB中配置构建信息
第三步:项目构建完成后,可以在刚才构建的buildID下面看到本次构建生成的重复代码报告信息
第一步:下载插件并安装插件
下载createjobadvanced.phi与依赖插件放到${jenkins安装目录}/jenkins_home/plugins目录,重启服务
第二步:项目JOB中配置构建信息
第三步:配置定时后,系统会在指定时间自动构建
Crontab格式:f1 f2 f3 f4 f5 program
其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程式。
第一步:下载插件并安装插件
下载email-ext对应的*.hpi与依赖插件放到${jenkins安装目录}/jenkins_home/plugins目录,重启服务
第二步:项目JOB中配置构建信息
在”Post-build Actions”选项中,不选择”Email Notification”标签,而勾选”Editable Email Notification”标签。并在Global Recipient List中填入接收邮件的地址,其它默认即可。
四、结论
通过jenkins与CI集成
■ 能够每天监控项目代码,控制项目风险
■ 提高代码质量,减少后期开发,维护或测试成本,
■ 能够完成基础测试场景自动化测试,减少测试成本