- 浏览: 219628 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
Wangwei86609:
非常好的规则引擎框架,支持决策树和多线程运行规则https:/ ...
规则引擎 -
hzxlb910:
真详细,收藏哈
maven setting.xml配置说明 -
东方胜:
[b][/b]
脚本语言 Tcl -
345161974:
hyw520110 写道345161974 写道这个Visua ...
Visual Tcl Binary 完整版(完美中文支持) -
hyw520110:
345161974 写道这个Visual Tcl Binary ...
Visual Tcl Binary 完整版(完美中文支持)
对持续集成的需求
对持续集成的需求主要来自项目过程的痛,在代码控制和管理方面我有以下几个方面的痛:
•环境时好时坏,开发人员对commit代码不够慎重
•缺乏一个统一集成的报告来反映项目质量各个方面
•各种代码检查工具运用门槛高
•无法量化开发人员的代码质量
•缺乏一种推进单元测试的有效手段
正因为有了上面的疼,让我想到了持续集成
持续集成原理和相应工具
持续集成的结构和原理由下图所示:
说起来就一句话,持续集成就是用一套工具自动化地接管代码构建的整个生命周期。在这么一个流程中主要需要三类工具:
•构建工具:maven
•调度和控制平台:hudson
•report工具:sonar
这些工具使用非常广泛,我就不多加介绍,下面记录一下我在实际项目中的具体实施过程
具体实施过程
1)搭建SCM环境
hudson每次启动构建生命周期是从去最新代码开始的,因此有必要配置好SCM环境,我在项目里使用SVN,具体配置就不多加介绍
2)配置maven,支持代码检查工具
若需要某些代码检查工具,如PMD、Cobertura等,需要在pom.xml里配置maven plugin,如下所示:
<plugin>
<artifactId>maven-surefire-report-plugin</artifactId>
<groupId>org.apache.maven.plugins</groupId>
<version>2.4.3</version>
<configuration>
<outputDirectory>${junitHtmlReportDir}</outputDirectory>
<outputName>index.html</outputName>
</configuration>
</plugin>
<plugin>
<groupId>org.sonatype.maven.plugin</groupId>
<artifactId>emma-maven-plugin</artifactId>
<version>1.2</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.4</version>
</plugin>
<plugin>
<artifactId>maven-surefire-report-plugin</artifactId>
<groupId>org.apache.maven.plugins</groupId>
<version>2.4.3</version>
<configuration>
<outputDirectory>${junitHtmlReportDir}</outputDirectory>
<outputName>index.html</outputName>
</configuration>
</plugin>
<plugin>
<groupId>org.sonatype.maven.plugin</groupId>
<artifactId>emma-maven-plugin</artifactId>
<version>1.2</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.4</version>
</plugin>
3)持续集成服务器
最好把持续集成服务器与开发服务器分开,单独管理。持续集成对环境没有特殊需求,只需一个能运行war包的web服务器就行。然后把下载好hudson.war部署在服务器上即可。顺便提一下,强大的hudson只不过是一个编译好的war包,因此安装它非常简单,和部署一个简单的web应用没什么区别
4)配置需要持续化集成的应用
•浏览器里访问hudson服务器,如http://10.20.147.111:8080/hudson/
•新建任务,具体属性按照帮助tip填写即可,关键是配置SCM地址和构建调度时间点,另外要特别勾选Sonar
•立即生成。在生成过程中可以点击“命令行输出”查看构建过程。构建过程和直接命令行里运行maven一样
5)发送邮件给相关人
可以在hudson里配置邮件列表,每次构建后会把报告发给指定人
6)查看报告
每次构建完成后可以在sonar服务器里查看到各种维度的报告,实例图如下所示:
实施经验
以上只是一个标准持续化构建流程的实施过程,这其中会根据具体需求有很多定制化的配置和技巧,在这几天实施过程中有如下经验可以分享:
•持续化集成是否有效果关键在于项目的单元测试的实施程度,如果贯彻得彻底则会极大地提升代码质量,各种报告才能有说服力,不然只是个玩具而已,只能告诉你项目没有编译问题
•通过工具来check代码规范和质量的实施情况。在sonar的配置面板里可以设置Quality profiles,这里预置了Checkstyle、Findbugs、PMD、Squid等几个代码检查框架,可以勾选出适合的检查点。关于这一点,项目架构师需要列好项目质量考核维度和风格规范,通过工具来check规范的实施情况
•如果有历史问题阻碍持续化集成就暂时略过它。有些项目以前没有贯彻过单元测试,这时很有可能由于单元测试不通过使得持续集成很难开展,或是代码覆盖率太低打击大家的信心。这可以把不需要这这期项目check的代码可以略去。单元测试这块可以在pom.xml里加上配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
另外要略过某些模块的代码覆盖率,可以在sonar->settings->General里设置,可以略过某些模块,也可以略过某些具体代码类,配置例子如下:
•持续化集成过程不能依赖任何第三方系统,如果有依赖就有可能因为环境问题导致某些时候单元测试不通过,因此单元测试在与第三方交互的地方都得mock,并且需要连根拔出,不能仅仅只是在单元测试类里面mock,因为这只能保证你的单元测试通过,但不能保证别人的单元测试调用到mock,可以通过spring的bean配置这块直接把mock类替换真实类,然后区分测试模块和实际模块的bean配置
•持续化集成虽好,但需要老板的支持。只有通过一定强制化才能让持续化集成得到真正执行,通过报告的某些维度来考核开发人员的代码质量,也绩效挂钩是比较好的办法
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/cutesource/archive/2010/07/28/5772346.aspx
发表评论
-
Maven Artifacts如何部署到仓库
2012-03-28 11:50 986http://www.blogjava.net/lishunl ... -
maven常见问题问答
2011-11-16 13:24 751前言 Maven,发音是[`meivin],"专家 ... -
maven setting.xml配置说明
2011-11-16 12:43 1411setting.xml view plain ... -
Maven实战指南:“打包”的技巧
2011-10-11 10:13 2094http://tech.it168.com/a2011/062 ... -
M2工程 mvn deploy 401 403错误处理
2011-10-10 15:11 1119http://hi.baidu.com/g4_gc/blog ... -
maven部署web工程基础步骤
2011-10-10 12:43 20441.准备工作 下载maven(url:http://a ... -
eclipse maven wtp jar/lib deploy
2011-10-09 09:57 1015eclipse工程(with maven & wtp) ... -
配置Maven web项目
2011-09-13 16:00 9371、创建Web应用 mvn archetype:genera ... -
maven报错:mvn deploy
2011-09-09 14:01 1684一.Error deploying artifact: ... -
maven配置篇之pom.xml
2011-09-08 15:24 809说完了settings.xml配置, ... -
简述maven中的profiles
2011-09-08 15:06 997Profiles是maven的一个很关键的术语:profile ... -
maven项目添加jar包.
2011-08-16 09:31 1154很多新手都不知道如何在maven项目里添加jar包. 以前我还 ... -
Hudson+Maven+SVN 快速搭建持续集成环境
2011-05-26 14:09 1015原: http://www.blogjava.net ... -
maven 配置篇 之 settings.xml
2011-05-24 20:36 876maven2 比起maven1 来说,需要配置的文件少多了,主 ... -
Maven生命周期详解
2011-05-24 17:47 681Maven强大的一个重要的 ... -
激活Maven profile的几种方式
2011-05-24 17:43 851首先简单介绍下 Maven 的 profile 是什么。对于人 ... -
使用Profile和Resources Filter隔离测试环境
2011-05-24 17:42 819Maven能够帮我们很好的 ... -
使用maven-sql-plugin实现持续数据库集成(CDBI)
2011-05-24 17:41 945数据库持续集成(Continuous Database Int ... -
Maven最佳实践:版本管理
2011-05-24 16:32 819原文:http://juvenshun.iteye ... -
Maven仓库
2011-05-24 16:30 866什么是Maven仓库 在不用Maven的时候,比如说以前我们 ...
相关推荐
至此,一个基本的基于 Hudson、Maven 和 SVN 的持续集成环境已经建立。这个环境可以自动获取代码变更、构建项目、运行测试并部署到目标服务器,显著提高了开发团队的工作效率。随着团队需求的增加,你还可以进一步...
使用hudson和maven完成持续集成,今天一个朋友过来问我,我就顺便录了一个简短的视屏,对使用做了一个简单的介绍,最大只参上传25M的文件,所以只能分两个包上传,希望能有需要的朋友有帮助
持续集成-SVN+Maven+Hudson+Sonar PPT讲解,持续集成的原理
【HUDSON持续集成MAVEN项目】是一个关于使用HUDSON(也称为Jenkins)进行Maven项目的持续集成实践的教程。持续集成是软件开发过程中的重要环节,它通过频繁地将开发人员的代码更改合并到主分支来减少集成问题,提高...
结合Hudson、Maven和SVN,可以构建出一套高效、自动化的持续集成环境。Hudson负责监听代码变更并启动构建,Maven处理构建过程,而SVN则作为代码版本控制中心。这种组合可以确保团队的代码质量和项目进度,降低集成...
通过这种方式,Maven2 和 CruiseControl 的结合使用可以实现高效、自动化的持续集成环境,帮助团队及时发现和修复问题,提高软件质量。同时,这种集成环境也便于监控项目状态,提供了一种自动化的方式来管理版本控制...
Hudson+Maven+SVN_快速搭建持续集成环境.docx
通过上述步骤,我们可以搭建一个完整的Hudson持续集成环境,它不仅能够实现项目的自动构建与测试,还能通过集成SVN、Maven等工具,进一步提升项目的开发效率和代码质量。此外,通过集成Checkstyle、PMD、FindBugs等...
"持续集成环境搭建" ...搭建一个完整的持续集成环境需要使用多种工具和技术,例如 Maven、Nexus、Jenkins 和 SVN 等。通过使用这些工具和技术,我们可以自动化构建、测试和部署软件,从而提高软件的质量和开发效率。
搭建Jenkins+Maven+SVN+Tomcat的持续集成环境,需要按照以下步骤: 1. 环境准备 - JDK1.8.0_131,版本不低于1.7,使用最新版本以获得最佳性能和最新特性。 - Apache Maven 3.3.9,不推荐使用3.5.0版本,以免出现...
总的来说,Hudson与Maven2的集成提供了高效、自动化和可扩展的持续集成解决方案,这对于大型开发团队来说至关重要,因为它可以及时发现和修复错误,提高软件质量,并促进团队间的协作。通过遵循上述步骤,开发者可以...
maven+hudson全部Jar包.part06.rar
基于maven创建web项目 ...本文介绍了基于maven创建web项目的步骤,包括搭建maven环境、集成maven到Myeclipse2013和创建maven架构下的WEB工程。通过这篇文章,读者可以学习到如何使用maven来构建和管理web项目。
详细介绍持续集成环境hudson+nexus+maven搭建
Hudson是一个基于Java的持续集成服务器,它支持多种操作系统,包括Windows、Linux和Unix等。Hudson提供了一个直观的Web界面,使得配置和管理持续集成流程变得简单。本文中提及的Hudson版本为1.386。 2. **安装...