<?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>Software Configuration Management and Agile Software Development &#187; Large-scale continuous integration</title>
	<atom:link href="http://accurev.com/blog/tag/large-scale-continuous-integration/feed/" rel="self" type="application/rss+xml" />
	<link>http://accurev.com/blog</link>
	<description>SCM and Agile Software Development Blog</description>
	<lastBuildDate>Fri, 03 Feb 2012 19:28:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>How We Manage Continuous Integration 2.0</title>
		<link>http://accurev.com/blog/2008/11/11/how-we-manage-continuous-integration-20/</link>
		<comments>http://accurev.com/blog/2008/11/11/how-we-manage-continuous-integration-20/#comments</comments>
		<pubDate>Tue, 11 Nov 2008 13:31:40 +0000</pubDate>
		<dc:creator>AccuRev</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Customer Guest Blogs]]></category>
		<category><![CDATA[AccuRev]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[automated builds]]></category>
		<category><![CDATA[automated tests]]></category>
		<category><![CDATA[build and release management]]></category>
		<category><![CDATA[build management]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[Continuous Integration 2.0]]></category>
		<category><![CDATA[Large-scale continuous integration]]></category>
		<category><![CDATA[managing multiple code bases]]></category>
		<category><![CDATA[multi-stage continuous integration]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[tdd]]></category>
		<category><![CDATA[Test Driven Development]]></category>

		<guid isPermaLink="false">http://accurev.wordpress.com/?p=430</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2008/11/11/how-we-manage-continuous-integration-20/' addthis:title='How We Manage Continuous Integration 2.0 ' ><a href="//addthis.com/bookmark.php?v=250&#38;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">&#124;</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div>I work for a large software company, and we&#8217;ve used AccuRev to facilitate using a large scale distributed Continuous Integration model. AccuRev makes this possible with the Stream approach to managing different codebases.  Developers run builds using the same build scripts used by the core team for production builds that ultimately are packaged and shipped [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2008/11/11/how-we-manage-continuous-integration-20/' addthis:title='How We Manage Continuous Integration 2.0 '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2008/11/11/how-we-manage-continuous-integration-20/' addthis:title='How We Manage Continuous Integration 2.0 ' ><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div><p>I work for a large software company, and we&#8217;ve used AccuRev to facilitate using a large scale distributed <a href="http://www.accurev.com/continuous-integration.html" target="_blank">Continuous Integration</a> model.</p>
<p>AccuRev makes this possible with the Stream approach to managing different codebases.  Developers run builds using the same build scripts used by the core team for production builds that ultimately are packaged and shipped out of Engineering.</p>
<p>These build scripts not only build and package and kit the product, they also run thousands of xUnit tests written to run fast and fail fast.  Developers that encounter failures immediately know where to fix the code to pass the tests.  <strong>We also use</strong> <strong>test driven development.</strong></p>
<p>Each day, developers promote their changes to a task stream.  <strong>We use Scrum</strong>, so a task stream correlates in most cases to a Scrum team.  This team runs automated builds / tests at their task stream level and when stories are done and accepted and passing, promote the appropriate changes to the integration stream.</p>
<p>The integration stream is built every afternoon, and any test failures run during the build are quickly addressed by the team.  Our Continuous Integration software provides a failure email with the modifications made that day with AccuRev user names.  Developers can then go into AccuRev using the <a href="http://www.accurev.com/streambrowser.html" target="_blank">StreamBrowser</a> and the Version Browser and determine the root cause.</p>
<p>Fixes are then promoted back to the integration stream, and the full nightly build in most cases runs successfully.  We fail all integration builds on test failure as we believe in Continuous Integration.</p>
<p>Each week our qa level stream is built and we repeat the same process. Developers handle the promotes, the central release team does not promote code for teams.  As code promotes up the hierarchy from task to integration to qa <strong>the frequency of broken builds, due to test errors or compilation, decreases</strong>.</p>
<p>This <a href="http://www.accurev.com/multistage-continuous-integration.html" target="_blank">Multi-stage Continuous Integration</a> approach is easy with AccuRev due to stream inheritence.  If you used a branch / merge solution you would need to staff a central team just to manage the commits to <a href="http://www.accurev.com/scm_comparisons.html" target="_blank">source control,</a> and manage code that is &#8220;done&#8221;.</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2008/11/11/how-we-manage-continuous-integration-20/' addthis:title='How We Manage Continuous Integration 2.0 '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://accurev.com/blog/2008/11/11/how-we-manage-continuous-integration-20/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

