<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>诗意代码 - PoemCode &#187; Continuous Integration</title>
	<atom:link href="http://www.poemcode.net/tag/continuous-integration/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.poemcode.net</link>
	<description>These codes, As beautiful as poetry!</description>
	<lastBuildDate>Wed, 08 Sep 2010 04:57:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>持续集成的三大支柱</title>
		<link>http://www.poemcode.net/2008/12/%e6%8c%81%e7%bb%ad%e9%9b%86%e6%88%90%e7%9a%84%e4%b8%89%e5%a4%a7%e6%94%af%e6%9f%b1/</link>
		<comments>http://www.poemcode.net/2008/12/%e6%8c%81%e7%bb%ad%e9%9b%86%e6%88%90%e7%9a%84%e4%b8%89%e5%a4%a7%e6%94%af%e6%9f%b1/#comments</comments>
		<pubDate>Tue, 30 Dec 2008 02:47:48 +0000</pubDate>
		<dc:creator>Xu Haojie</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Continuous Integration]]></category>

		<guid isPermaLink="false">http://www.poemcode.net/?p=66</guid>
		<description><![CDATA[持续集成（Continuous Integration, 简称CI），是由持续编译、测试、检查和部署组成的一个过程。在任何一个CI环境中，这意味着，在版本控制库中，每一代码变更，就会运行一次构建（build）。

Martin Fowler是这样描述CI的：]]></description>
			<content:encoded><![CDATA[<div id="attachment_55" class="wp-caption alignleft" style="width: 310px"><img class="size-medium wp-image-55" title="Pillars of CI" src="http://www.poemcode.net/wp-content/uploads/2008/12/pillars_of_ci_0-300x194.jpg" alt="Pillars of CI" width="300" height="225" /><p class="wp-caption-text">Pillars of CI</p></div>
<p><em>以下资讯翻译自<a title="The Three Pillars of Continuous Integration" href="http://java.dzone.com/articles/the-three-pillars-continuous-i" target="_blank">dzone</a></em></p>
<p>持续集成（Continuous Integration, 简称CI），是由持续编译、测试、检查和部署组成的一个过程。在任何一个CI环境中，这意味着，在版本控制库中，每一代码变更，就会运行一次构建（build）。</p>
<p>Martin Fowler是这样描述CI的：</p>
<blockquote><p>持续构建是一种软件开发实践，团队成员要频繁地集成自己的工作成果，一般，每个人员至少是按照天来进行集成的，这样，一天就会有多次集成。每次集成都通过自动构建来验证，以便尽可能快的发现错误。</p></blockquote>
<p>许多团队发现这种方法能够显著地减少集成的问题，更加快速地开发“聚合式”的软件。CI是一个过程，同时这个术语和三大重要工具联系在一起。就如图片所示，CI的三大支柱就是：</p>
<ol>
<li>版本控制库，例如Subversion、CVS</li>
<li>CI服务器，例如Hudson、Cruise Control</li>
<li>自动构建过程，例如Ant、Nant</li>
</ol>
<p>接下来，我们就逐个地、详细地看看这三个支柱：</p>
<h4>版本控制库</h4>
<p>版本控制库，也就是源代码管理（Source Code Management，简称SCM），在任何一个开发环境中，其都扮演了关键的角色。在一个成功的CI过程中，版本控制库也同样扮演了重要的角色。对于团队而言，SCM处在一个中心位置，用来存储项目中每一样成果，其强制性地要求团队一定要把每样东西都放到仓库里，包括构建脚本，属性文件，数据库脚本，编译软件所使用的所有库文件等等。</p>
<h4>CI服务器</h4>
<p>我们需要一个自动的过程，能够监视版本控制库，并在发现变化时运行构建。现在已经有了可用的开源的或者商业的CI服务器。他们有一些类似的地方，例如在基本的配置、监视版本控制库、在变化发生时执行构建。</p>
<p>通常使用到的开源CI服务器有：Cruise Control，Continuum和Hudson。Hudson比较有“意思”，因为它配置简单，编译用的插件能够和测试和静态分析工具进行整合。</p>
<h4>自动构建</h4>
<p>CI过程差不多就是频繁构建软件，这个过程要通过build来完成。截止到目前，稳健的构建策略是成功的CI过程重要一个方面。构建的缺失会导致CI的失败。</p>
<p>现在我们已经看到了在CI过程中重要的工具，那就看看对于开发人员来说，一个典型的CI场景应该是什么样子的？</p>
<ol>
<li>配置CI服务器从版本控制库中获取变更内容</li>
<li>开发人员把代码提交到版本控制库中</li>
<li>CI服务器发现变化，从版本控制库中重新找回最新的代码</li>
<li>这引发了CI服务器用指定的target和option调用构建脚本</li>
<li>如果有配置，一旦有特定的、重要的事件发生，CI服务器就会发出一封E-Mail给指定的接收者。</li>
<li>CI服务器不断的获取变更</li>
</ol>
<p>为什么CI重要？这是一个经常被问到的问题，以下就是关于这项技术的要点：</p>
<ol>
<li>频繁构建软件极大增加早早发现缺陷的可能性，</li>
<li>扩大了缺陷的能见度</li>
<li>CI保证了每次变化都有一个准备好用于生产的软件</li>
<li>CI通过每次变更时进行构建，也保证了减少了集成问题的风险</li>
<li>CI服务器也可以配置运行基础检查，协助开发团队找到潜在的BUG，糟糕的编程实践，自动检查代码标准，对正在编写的代码的质量提供有价值的反馈</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.poemcode.net/2008/12/%e6%8c%81%e7%bb%ad%e9%9b%86%e6%88%90%e7%9a%84%e4%b8%89%e5%a4%a7%e6%94%af%e6%9f%b1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
