<?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>Build and Release Management &#187; Continuous Integration</title>
	<atom:link href="http://allscm.com/archives/category/build-framework/continuous-integration/feed" rel="self" type="application/rss+xml" />
	<link>http://allscm.com</link>
	<description>Build. Release. Profit</description>
	<lastBuildDate>Tue, 15 May 2012 22:15:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>How To Do Build Dependency</title>
		<link>http://allscm.com/archives/how-to-do-build-dependency.html</link>
		<comments>http://allscm.com/archives/how-to-do-build-dependency.html#comments</comments>
		<pubDate>Tue, 12 Feb 2008 09:45:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Build Framework]]></category>
		<category><![CDATA[Continuous Integration]]></category>

		<guid isPermaLink="false">http://allscm.com/?p=62</guid>
		<description><![CDATA[Awhile back when I was implementing a particular build into the CI model, I ran into a dependency debate; both with my own as well as the development group.  The project (A) in question has a lib dependency on another project (B).   The difference in view came when I suggested for A to depend [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-175" style="margin: 5px;" title="dependency" src="http://allscm.com/wp-content/uploads/2008/02/dependency.png" alt="dependency" width="121" height="98" />Awhile back when I was implementing a particular build into the CI model, I ran into a dependency debate; both with my own as well as the development group.   The project (<strong>A</strong>) in question has a lib dependency on another project (<strong>B</strong>).    The difference in view came when I suggested for <strong>A</strong> to depend on latest successful build (from a label) of <strong>B</strong>.   The other parties were against my suggestion and argued that <strong>A</strong> should be depending on build <strong>B</strong> on an absolute term meaning <strong>A</strong> will always point to the latest and greatest of <strong>B</strong>.</p>
<p>The problem for the latter argument is that <strong>A</strong> fails whenever <strong>B</strong> fails because there is no safety net for <strong>A</strong>.   As I was being overwhelmingly outnumbered, I caved in to the second suggestion which is to have <strong>A</strong> directly point to <strong>B</strong>&#8216;s latest and greatest build.   Well, suffice it to say the decision came back to bite us.</p>
<p>We got bitten and yours truly had to spend additional time in fixing and changing the build scripts to adopt my original suggestion.   Now whenever <strong>B</strong> has a successful build, the script slaps on a label for <strong>A</strong> to point and consume.   This way we successfully ensure <strong>A</strong> will have the freshest dependency on <strong>B</strong> while avoiding unnecessary broken builds due to &#8220;tip&#8221; dependency.</p>
]]></content:encoded>
			<wfw:commentRss>http://allscm.com/archives/how-to-do-build-dependency.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Project Build Dependencies in CruiseControl.NET</title>
		<link>http://allscm.com/archives/project-build-dependencies-in-cruisecontrolnet.html</link>
		<comments>http://allscm.com/archives/project-build-dependencies-in-cruisecontrolnet.html#comments</comments>
		<pubDate>Wed, 30 Jan 2008 09:03:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Build Framework]]></category>
		<category><![CDATA[Continuous Integration]]></category>

		<guid isPermaLink="false">http://allscm.com/?p=44</guid>
		<description><![CDATA[CruiseControl.NET allows you to trigger a build base on another build&#8217;s successful completion. This is useful in that it allows builds with dependencies to be fully automated. When one is built successfully, another or more will be triggered. Here is an example code snippet: Within the &#60;triggers&#62; block, you can add an additional trigger similar [...]]]></description>
			<content:encoded><![CDATA[<p>CruiseControl.NET allows you to trigger a build base on another build&#8217;s successful completion.  This is useful in that it allows builds with dependencies to be fully automated.  When one is built successfully, another or more will be triggered.  Here is an example code snippet:</p>
<p>Within the &lt;triggers&gt; block, you can add an additional trigger similar to this:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;projecttrigger</span> <span style="color: #000066;">serveruri</span>=</span>
<span style="color: #009900;">“tcp://buildserver01:21234/CruiseManager.rem”</span>
<span style="color: #009900;"><span style="color: #000066;">project</span>=”Example Build 1.1″<span style="color: #000000; font-weight: bold;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;triggerstatus<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Success<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/triggerstatus<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;innertrigger</span> <span style="color: #000066;">type</span>=”intervalTrigger”</span>
<span style="color: #009900;"><span style="color: #000066;">seconds</span>=”30″ <span style="color: #000066;">buildcondition</span>=”ForceBuild”<span style="color: #000000; font-weight: bold;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/innertrigger<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/projecttrigger<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>You can also have multiple triggers, one other trigger in this block might be the &#8220;modification set&#8221; trigger where it monitors the source control repository for changes to kickoff builds.</p>
]]></content:encoded>
			<wfw:commentRss>http://allscm.com/archives/project-build-dependencies-in-cruisecontrolnet.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CruiseControl .NET WebDashboard Tips</title>
		<link>http://allscm.com/archives/cruisecontrol-net-webdashboard-tips.html</link>
		<comments>http://allscm.com/archives/cruisecontrol-net-webdashboard-tips.html#comments</comments>
		<pubDate>Sun, 30 Dec 2007 08:58:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Build Framework]]></category>
		<category><![CDATA[Continuous Integration]]></category>

		<guid isPermaLink="false">http://allscm.com/?p=38</guid>
		<description><![CDATA[Did you know that you can disable the &#8220;force&#8221; and &#8220;stop&#8221; build buttons for each project on CruiseControl.NET’s webdashboard? Inside the &#60;remote services&#62; code block, you can simply add allowForceBuild and allowStartStopBuild options: &#60;remoteservices&#62; &#60;servers&#62; &#60;server name=&#34;BUILDSERVER01&#34; url=&#34;tcp://buildserver01:21234 /CruiseManager.rem&#34; allowForceBuild=&#34;false&#34; allowStartStopBuild=&#34;false&#34; /&#62; &#60;/servers&#62; &#60;/remoteservices&#62; By doing this, you would be able to have better control [...]]]></description>
			<content:encoded><![CDATA[<p>Did you know that you can disable the &#8220;force&#8221; and &#8220;stop&#8221; build buttons for each project on CruiseControl.NET’s webdashboard?</p>
<p>Inside the &lt;remote services&gt; code block, you can simply add allowForceBuild and allowStartStopBuild options:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;remoteservices<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;servers<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
         <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;server</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;BUILDSERVER01&quot;</span></span>
<span style="color: #009900;">         <span style="color: #000066;">url</span>=<span style="color: #ff0000;">&quot;tcp://buildserver01:21234</span>
<span style="color: #009900;">         /CruiseManager.rem&quot;</span></span>
<span style="color: #009900;">         <span style="color: #000066;">allowForceBuild</span>=<span style="color: #ff0000;">&quot;false&quot;</span></span>
<span style="color: #009900;">         <span style="color: #000066;">allowStartStopBuild</span>=<span style="color: #ff0000;">&quot;false&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/servers<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/remoteservices<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>By doing this, you would be able to have better control of the individual builds without any unwanted build trigger from developers, etc.</p>
]]></content:encoded>
			<wfw:commentRss>http://allscm.com/archives/cruisecontrol-net-webdashboard-tips.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Configuration Management Policy</title>
		<link>http://allscm.com/archives/configuration-management-policy.html</link>
		<comments>http://allscm.com/archives/configuration-management-policy.html#comments</comments>
		<pubDate>Thu, 19 Jul 2007 08:14:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Automated Test Framework]]></category>
		<category><![CDATA[Build Framework]]></category>
		<category><![CDATA[Continuous Integration]]></category>
		<category><![CDATA[Release Framework]]></category>
		<category><![CDATA[SCM Agile Development]]></category>

		<guid isPermaLink="false">http://allscm.com/?p=23</guid>
		<description><![CDATA[To promote the spirit of Agile Development and Continuous Integration, groups of builds must be classified and treated differently within the development organization. These builds are as follows: Engineering: These builds lives on the individual developer&#8217;s machine. It should never see the light of day beyond this scope. This is merely a convenient build tool [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-199" style="margin: 5px;" title="policy" src="http://allscm.com/wp-content/uploads/2007/07/policy.png" alt="policy" width="58" height="74" />To promote the spirit of Agile Development and Continuous Integration, groups of builds must be classified and treated differently within the development organization.  These builds are as follows:</p>
<ul>
<li>Engineering:  These builds lives on the individual developer&#8217;s machine.  It should never see the light of day beyond this scope.  This is merely a convenient build tool designed to allow developers to easily build and debug their code.  There are exceptions, however; for teams developing in the new .NET paradigm using the all inclusive solution (*.sln) files to build will have no need for this type of build.  This is mainly useful for older softwares where several manual modification/moving/copying of file operations are need.  These builds are then classified as on-demand.</li>
<li>Continuous Integration (Development):  These types of builds can also be referred to as the Continuous Integration (CI) builds.  These builds lives on a stand-alone machine and the artifacts should only be made available to the immediate development team of the respective project.  These builds should then be considered continuous since it is constantly polling for new check-ins.</li>
<li>Software Configuration Management (Product Testing):  These builds are on-demand and should only be initiated by team leads or managers of the particular development group.  These builds should be built based on a label within the source control tool.  There should not be any errors as these builds are derived from successful CI builds.  The consumer for these builds will be the QA group.</li>
<li>Software Configuration Management (Product Release):  Similar to that of the product test SCM builds, these only differ in nature and title as they are meant for real world consumption.</li>
</ul>
<p>To create quick build turn-arounds, plentiful CPU cycles, clean and reproducible build environments; each one of these build classifications should live on its own machine/server.   The two flavors of SCM builds can actually be on the same server, but Engineering, CI, and SCM must all exist separately.</p>
<hr />UPDATE (from Paul Keeble):</p>
<p>There is another way of looking at this, especially when considering the agile process, and especially when in an enterprise software environment.</p>
<p>You still have the needs for a Engineer build and a CI build but instead of the SCM builds you instead &#8220;promote&#8221; the CI build.  What this effectively means is that someone chooses a CI build to push towards QA, and then this is pushed ultimately to production, etc.</p>
<p>As a process it has the advantage of being simplier and centralises all efforts around the automated build.   It is physically impossible for the wrong code to get built for production because someone changed a tag, instead the built artifact is the same (and can be checked against an MD5 to test it).</p>
<p>Although not as frequent in the .NET world its a common practice in the Java world.</p>
]]></content:encoded>
			<wfw:commentRss>http://allscm.com/archives/configuration-management-policy.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

