初识持续集成(Continuous Integration)

博客内容仅作学习/交流/参考之用,详细内容参见更多网络资源,欢迎大家交流探讨;如果内容信息侵犯了你的合法权益,请告知我,我将及时处理。E-Mail:dwang2014#hotmail.com(# ——> @)

内容主要是参考资料[1]的转载,可以对架构有初步的认识,参考资料[2]和[3]作为补充,以及一些使用的内容。


1.背景

为什么需要持续构建呢?其实很简单,为了减少程序员的工作量,为了便于大型开发团队的管理。
看了《每日构建与持续集成联系与区别》后还是有点懵,还是继续看看架构吧。

什么是持续集成?
随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题。尤其是近些年来,敏捷(Agile) 在软件工程领域越来越红火,如何能再不断变化的需求中快速适应和保证软件的质量也显得尤其的重要。
持续集成正是针对这一类问题的一种软件开发实践。它倡导团队开发成员必须经常集成他们的工作,甚至每天都可能发生多次集成。而每次的集成都是通过自动化的构建来验证,包括自动编译、发布和测试,从而尽快地发现集成错误,让团队能够更快的开发内聚的软件。
更具体的解释可以参考Martin fowler的Continuous Integration

2.整体架构

在搭建持续构建环境之前,我们先来看一下这个开发环境的整体架构,这样既便于我们了解整个环境运行的原理,也能够让我们更加清晰的认识整个开发环境。开发环境分为两部分:一部分架设在服务器端,主要提供邮件服务、SVN服务、管理Maven库和提供自动构建服务,另一部分搭建在开发者的客户端,主要包括邮件的接收、SVN客户端操作和Maven本地仓库。

另:如果需要可以在各个客户端搭建SVN备份服务器。整体架构如下图所示:

framework

Jenkins,前身是Hudson。
上述的架构可能不是很清晰,为了让大家更清楚的了解这个架构,我们再来看一下它的各个组成部分。

3.邮件

邮件服务器架构非常简单,即在服务器端搭建邮件服务器,在各个客户端配置相应的邮件客户端,通过STMP协议进行邮件的收发和管理。具体架构图如下所示:

mail


4.SVN

SVN服务器非常简单,主要在服务器端搭建SVN服务器,用以管理版本库,在用户端使用Tortoise SVN和Eclipse CVS插件进行代码的管理操作。

另:可以适当选择搭建SVN服务器,作为SVN版本库的备份库使用。具体架构如下所示:

SVN


5.Maven

Nexus私服器主要功能为在开发者和Maven Central之间搭建一个中介,用于管理和统一Maven库,对于网络资源利用和在不提供外网的公司进行开发有着非常重要的意义,具体架构如下所示:

maven


6.持续构建

持续构建服务器搭建在服务器端,通过整合邮件服务器、SVN服务器和Maven私服器,可以提供对项目的自动化构建、编译和发布等功能,并可以针对不同的情况发送邮件通知项目经理和开发人员。具体架构图如下所示

Jenkins

架构的介绍到此就结束了。

关于持续集成更详细的内容可参看更多详尽的资料,例如《浅谈持续集成构建在互联网软件测试项目中应用与分析》以及《持续集成(CI)、自动化构建和自动化测试--初探》

参考材料

[1].source:《持续构建环境搭建(一)架构》  author:HackerVirus

[2].source:《持续集成环境Jenkins的搭建和使用》 author:langresser

[3].soruce:《基于 Jenkins 快速搭建持续集成环境》  author:张善友


站在巨人的肩上才能看得更远,一步一个脚印才能走得更远。分享成长,交流进步,转载请注明出处!

猜你喜欢

转载自blog.csdn.net/BonJean/article/details/51473870