<?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>Agile Sharepoint development by 21apps and Andrew Woodward MVP &#187; Continuous Integration</title>
	<atom:link href="http://www.21apps.com/tag/continuous-integration/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.21apps.com</link>
	<description></description>
	<lastBuildDate>Wed, 28 Jul 2010 10:19:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Setting up SharePoint 2010 CI process with Team City</title>
		<link>http://www.21apps.com/continuous-integraton/setting-up-sharepoint-2010-ci-process-with-team-city/</link>
		<comments>http://www.21apps.com/continuous-integraton/setting-up-sharepoint-2010-ci-process-with-team-city/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 21:27:58 +0000</pubDate>
		<dc:creator>Andrew Woodward</dc:creator>
				<category><![CDATA[Continuous Integraton]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[2010]]></category>
		<category><![CDATA[Aberdovey]]></category>
		<category><![CDATA[Continuous Integration]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://www.21apps.com/?p=1198</guid>
		<description><![CDATA[In this article and screen cast we will discuss the idea behind the CI process and focus on the technical tricks that we need to make in order to get this working for a SharePoint 2010 project using Team City and Subversion.
One of the first things that you will want to do for any development project [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>In this article and screen cast we will discuss the idea behind the CI process and focus on the technical tricks that we need to make in order to get this working for a SharePoint 2010 project using Team City and Subversion.</p></blockquote>
<p>One of the first things that you will want to do for any development project is setup your <a href="http://en.wikipedia.org/wiki/Continuous_Integration" target="_blank">Continuous Integration</a>process. The value of having a server automatically monitor your source code repository for changes and validating they work is immense</p>
<p>Its worth mentioning that doing Continuous Integration is not something you will want to leave until later in the project.  Waiting means the solution gets bigger and more complex which in turn make the setup more comples.   My recommendation:  Get this configured early, during Sprint 0  (i.e. before you write any real production code) if at all possible.</p>
<h3>The basic CI Process</h3>
<p>The diagram below shows the normal process that occurs.  </p>
<p>(1) a developer checks in some code changes to the source code repository.</p>
<p>(2) The CI server monitors the source code repository for any changes</p>
<p>When changes are detected the code is retrieved and the automated build is started.  This build will normally include running Unit, Integration and Build Verification tests.</p>
<p>(3) The success or failure of the automated build is reported back to the Team (including the developer).</p>
<p><em>In some teams breaking the build means the developer has a forfeit of some sort.  The idea is to encourage team work but also to discourage broken builds.</em></p>
<p><a href="http://www.21apps.com/wp-content/uploads/2010/02/image.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Continuous Integration" src="http://www.21apps.com/wp-content/uploads/2010/02/image_thumb.png" border="0" alt="Continuous Integration" width="548" height="665" /></a> </p>
<h3>When the build breaks!</h3>
<p>A term I read recently, &#8216;Stop-the-Line&#8217;,  is used in Toyota manufacturing process where any problem results in the production line being stopped until the cause of the problem is found, resolved and ideally prevented from re-occurring.    </p>
<p>This should be the same when a build breaks; the whole Team should stop and help get the build working again.  It is not just a problem for the developer who last checked in &#8211; the whole team need the process and need the builds to be working.</p>
<h3>Setting Up in Sprint 0</h3>
<p>The actual process described above is a little into the development cycle, when the build is in place and when the team are working on production code.   Before this can happen there needs to be a process put in place.  I refer to this initial as getting the <strong>strawman</strong> solution done.</p>
<blockquote><p><em><strong>definition: Strawman</strong></em></p>
<p>In general, a strawman is an object, document, person, or argument that temporarily stands in for and is intended to be &#8220;knocked down&#8221; by something more substantial.    </p>
<p align="right">source: <a title="http://whatis.techtarget.com/wsearchResultsB/0,,sid9,00.html?query=strawman" href="http://whatis.techtarget.com/wsearchResultsB/0,,sid9,00.html?query=strawman" target="_blank">Whatis.com</a></p>
</blockquote>
<p align="left">The aim is to take some code, which will be replaced hence the Strawman term through the CI process and get the team build notifications working.   You should aim to prove the successful builds but also what happens when the build fails.  Did the team get notified?  and did they react?</p>
<h3>The Strawman Exercise</h3>
<p align="left">21apps is a small and geographically dispersed team,  we make extensive use of cloud based services for things like source control as they prove to be cost effective and flexible and our strawman  process tends to follow these steps:</p>
<p align="left">1) Create a repository for the project  (Hosted Subversion)</p>
<p align="left">2) Create the strawman project  (Simple &#8216;hello world&#8217; web part)</p>
<p align="left">3) Create a simple build script  &#8211; small steps mean a successful compile is our objective</p>
<p align="left">4) Create a automated build configuration on our CI server &#8211; we use <a href="http://www.jetbrains.com/teamcity/" target="_blank">Team City</a></p>
<p align="left">5) Prove the successful and failed builds</p>
<p align="left">In this post we are focusing on step (4) setting up Team City as our CI server. </p>
<p align="left">To make this easier I have provided a quick video walkthrough on what we have done for the early builds of <a href="http://www.21apps.com/sharepoint/introducing-project-aberdovey/" target="_blank">Project Aberdovey</a>- the process will be very similar for your SharePoint 2010 solutions.</p>
<p align="left"> </p>
<p align="left"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="600" height="450" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=9655768&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="600" height="450" src="http://vimeo.com/moogaloop.swf?clip_id=9655768&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" allowfullscreen="true" allowscriptaccess="always"></embed></object><a href="http://vimeo.com/9655768">SharePoint 2010 &#8211; CI with TeamCity</a> from <a href="http://vimeo.com/user2441558">Andrew Woodward</a> on <a href="http://vimeo.com">Vimeo</a>.
</p>
<p align="left"> </p>
<h3>Video Spotlights</h3>
<p>Key areas that are highlighted in the video that you will enable you to build SharePoint 2010 projects in Team City.</p>
<p>If you are using MSBuild ensure you set the MSBuild version to Microsoft.Net Framework 3.5 and x64 run platform.</p>
<p align="left"><a href="http://www.21apps.com/wp-content/uploads/2010/02/image1.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" src="http://www.21apps.com/wp-content/uploads/2010/02/image_thumb1.png" border="0" alt="image" width="479" height="347" /></a></p>
<p align="left"> </p>
<p align="left">Force Team City to use MSBuild 4.0 as this is needed by adding the Environment Variable</p>
<p align="left"><span style="font-family: Courier New; font-size: small;">Name: MSBuild</span></p>
<p align="left"><span style="font-family: Courier New; font-size: small;">Reference Syntax: %env.MSBuild%</span></p>
<p align="left"><span style="font-family: Courier New; font-size: small;">Value: %system.DotNetFramework4.0_x86_Path%</span></p>
<p><a href="http://www.21apps.com/wp-content/uploads/2010/02/image2.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" src="http://www.21apps.com/wp-content/uploads/2010/02/image_thumb2.png" border="0" alt="image" width="580" height="233" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.21apps.com/continuous-integraton/setting-up-sharepoint-2010-ci-process-with-team-city/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Which Build Servers in SharePoint &#8211; The Results</title>
		<link>http://www.21apps.com/sharepoint/which-build-servers-the-results/</link>
		<comments>http://www.21apps.com/sharepoint/which-build-servers-the-results/#comments</comments>
		<pubDate>Sun, 11 Oct 2009 11:11:36 +0000</pubDate>
		<dc:creator>Andrew Woodward</dc:creator>
				<category><![CDATA[Aberdovey]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Continuous Integraton]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Continuous Integration]]></category>

		<guid isPermaLink="false">http://www.21apps.com/?p=1062</guid>
		<description><![CDATA[The numbers are in and I think this small sample really gives a good view as to the way people are approaching their SharePoint development projects.
Numbers taken from a one week poll asking people which build servers they used on their SharePoint projects.

It&#8217;s very clear from this that people are in one of 3 camps [...]]]></description>
			<content:encoded><![CDATA[<p>The numbers are in and I think this small sample really gives a good view as to the way people are approaching their SharePoint development projects.</p>
<blockquote><p>Numbers taken from a one week poll asking people <a href="http://www.21apps.com/agile/which-build-server-are-you-using/" target="_blank">which build servers they used on their SharePoint projects</a>.</p></blockquote>
<p><a href="http://www.21apps.com/wp-content/uploads/2009/10/CIPollResults.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="CI Poll Results" src="http://www.21apps.com/wp-content/uploads/2009/10/CIPollResults_thumb.png" border="0" alt="CI Poll Results" width="533" height="279" /></a></p>
<p>It&#8217;s very clear from this that people are in one of 3 camps of almost identical size</p>
<ul>
<li>Those using Team Foundation Server</li>
<li>Those that user another non Microsoft tool</li>
<li>Those that don&#8217;t do anything</li>
</ul>
<h3>Team Foundation Server</h3>
<p>Installing and using, or developing against Microsoft SharePoint Server requires a fairly big commitment to the Microsoft technology stack, so the domination of <a href="http://msdn.microsoft.com/en-us/teamsystem/default.aspx" target="_blank">Team Foundation Server</a> is probably to be expected.</p>
<ul>
<li>If your a big corporate user of SharePoint you most likely have a deal that includes TFS licenses</li>
<li>You have likely committed to Microsoft as the platform of choice across the board</li>
<li>If your a Microsoft Partner delivering products and solutions you will have a big investment in Microsoft licenses, and also a duty to adopt the MS recommended path</li>
<li>TFS is a good solution,  and it&#8217;s getting better in 2010</li>
</ul>
<h3>Non Microsoft Tools</h3>
<p>I was surprised by the mix of Non Microsoft tools,  having looked at what you get for free and the costs for licensing beyond that I would have expected <a href="http://www.jetbrains.com/teamcity/" target="_blank">Team City</a> to have a bigger following.  Perhaps the reason for not being higher is jetBrains being thought of a Java based?</p>
<p>I bundled <a href="http://confluence.public.thoughtworks.org/display/CCNET/Welcome+to+CruiseControl.NET" target="_blank">CruiseControl</a> and <a href="http://thoughtworks.com/cruise" target="_blank">Cruise</a> together,  in hindsight I should have split them as they are totally different products.   I will make the assumption that most are using CruiseControl as this was really one of the first decent automated build tools to target the .Net platform.  People have got to know it an have scripted automation for their non SharePoint projects already.</p>
<p><a href="http://www.finalbuilder.com/" target="_blank">Final Builder</a> I have always liked the look of;  I really do find the whole raw XML editing that we have to do in any build automation a bit like developing against SharePoint,  it&#8217;s ok but the tools really should be better than this.   Final Builder has a great product, but the cost per user is perhaps the barrier here.</p>
<h3>Other</h3>
<p>Some people had build servers but didn&#8217;t use it for SharePoint &#8211; would really count those as None.</p>
<p>Others listed the source repository (SVN) or scripting language (msbuild, nant) so I assume that the build is done manually using batch files rather than via a dedicated build server.</p>
<p>Also someone listed Hudson,  something I had personally never heard of, but will bundle with the Non Microsoft Tools.</p>
<h3>None, we don&#8217;t have a build server</h3>
<p>This was probably the biggest surprise to me,  and perhaps not the way you might think.  I was actually surprised that only 35% of people indicated that they did not have any form of build server for their SharePoint projects.  </p>
<p>Based on my years of doing consultancy gigs I found that the majority of companies that I went into to do work didn&#8217;t have anything even close to an automated build server.  Heck some don&#8217;t even have source control for the code!</p>
<p>So I can take a couple of things from this</p>
<ul>
<li>People who don&#8217;t were too embarrassed to answer</li>
<li>SharePoint development has moved on significantly and most teams now have proper build servers</li>
<li>The readers of my blog are not representative of the wider SharePoint user base</li>
</ul>
<p> </p>
<h3>Conclusion</h3>
<p><a href="http://www.21apps.com/wp-content/uploads/2009/10/CIPollResultsNumbers.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="CI Poll Results Numbers" src="http://www.21apps.com/wp-content/uploads/2009/10/CIPollResultsNumbers_thumb.png" border="0" alt="CI Poll Results Numbers" width="644" height="292" /></a></p>
<p>There are still a lot of SharePoint teams out there that have yet to get the benefit from automating their builds,  who will undoubtedly be spending many hours manually putting things together the night before Go-Live.  </p>
<p>For these people, and those moving into SharePoint for the first time, there is a need to provide more information on why investing time in getting your automated build in from the start can make huge savings over the life of a project.  Providing walkthroughs on how to do this and some of the challenges you will encounter along the way.</p>
<p>Based on the feedback I could look at doing TFS first,  but I know that for teams with nothing setup yet this is going to be a big stumbling block.  Trying to convince you boss to roll out Team Foundation Server just so you can automate your SharePoint build is not an easy argument to have.   I will instead look at the options allowing you to get up and running quickly and more importantly without needing to get budget for licenses. </p>
<p>I will start with <a href="http://thoughtworks.com/cruise" target="_blank">Cruise</a>,  and I will be dog fooding this for real on <a href="http://www.21apps.com/sharepoint/introducing-project-aberdovey/" target="_blank">Project Aberdovey</a>.  </p>
<p>Thanks to everyone who took the time to vote,  I would love to hear your own take on what the numbers mean to you and your experience with automating builds in SharePoint.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.21apps.com/sharepoint/which-build-servers-the-results/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
