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一样。(
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 参考