<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Quality Software Development with Ease &#187; Ubuntu</title>
	<atom:link href="http://qualityswdev.com/tag/ubuntu/feed/" rel="self" type="application/rss+xml" />
	<link>http://qualityswdev.com</link>
	<description>Thoughts on better ways to develop high quality software by Manuel Küblböck. Agile and Lean methodologies, XP practices and other software development goodness.</description>
	<lastBuildDate>Sun, 20 May 2012 21:09:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='qualityswdev.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/616a91f395956dcbbef17b7fa1e2d403?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Quality Software Development with Ease &#187; Ubuntu</title>
		<link>http://qualityswdev.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://qualityswdev.com/osd.xml" title="Quality Software Development with Ease" />
	<atom:link rel='hub' href='http://qualityswdev.com/?pushpress=hub'/>
		<item>
		<title>Java Build Server</title>
		<link>http://qualityswdev.com/2010/01/23/java-build-server/</link>
		<comments>http://qualityswdev.com/2010/01/23/java-build-server/#comments</comments>
		<pubDate>Sat, 23 Jan 2010 04:01:17 +0000</pubDate>
		<dc:creator>Manuel Küblböck</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Build Server]]></category>
		<category><![CDATA[Continuous Integration]]></category>
		<category><![CDATA[Hudson]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[Nexus]]></category>
		<category><![CDATA[Sonar]]></category>
		<category><![CDATA[Subversion]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://qualityswdev.com/?p=85</guid>
		<description><![CDATA[Update [15.05.2010]: I finally had a chance to try out SecureCI, which is pretty much exactly what I described in this post. The guys from Coveros did a great job, so I suggest after reading this post you head over to their website, download SecureCI and give it a go. Thanks John for pointing this <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=qualityswdev.com&#038;blog=10101488&#038;post=85&#038;subd=qualityswdev&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" style="margin:5px;" src="http://farm4.static.flickr.com/3452/3204450759_acf201a8f8_m.jpg" alt="" width="144" height="108" /></p>
<p><strong>Update [15.05.2010]:</strong> I finally had a chance to try out <a href="http://www.coveros.com/research/research_stack.php" target="_blank">SecureCI</a>, which is pretty much exactly what I described in this post. The guys from Coveros did a great job, so I suggest after reading this post you head over to their website, download SecureCI and give it a go. Thanks John for pointing this out to me.</p>
<p>In my last Java project, I set up a <strong>build server with Continuous Integration (CI) capability</strong>. I am a big fan of Test Driven Development (TDD) and I quite enjoyed <a href="http://hudson-ci.org/" target="_blank">Hudson</a> telling us right away when someone checked in code that broke the build. It just gives you so much more confidence in your code and keeps it releasable at all times. In addition, we used <a href="http://sonar.codehaus.org/" target="_blank">Sonar</a> to measure the quality of our code. I found it quite interesting to study how the different metrics changed over the course of the project. We paid particular attention to code coverage and tried to keep it as close to 100% as possible. This should happen naturally anyway if you are practicing TDD.</p>
<p>Setting all this up was a good experience to learn how it all fits together &#8211; But I learned my lesson and I don&#8217;t really want to do it over and over again. So, I started looking for a <strong>Virtual Appliance</strong> that had most, if not all, of these capabilities. Setting up a build server must have been done by other developers a million times before. Surely, someone along the way stuck it all on a Virtual Machine (VM) and made it open source, right? Well, that&#8217;s what I thought, but I couldn&#8217;t find any. So, I decided to create one myself. Unfortunately, I am lacking the hardware to do so at the moment. I have even already created a project for it on <a title="Java Build Server" href="https://launchpad.net/java-build-server" target="_blank">https://launchpad.net/java-build-server</a>. Although, I haven&#8217;t come around to create the VM yet, I still wanted to share my idea here to maybe animate someone else to go ahead and give it a go. So here it is: my idea of a Java build server.</p>
<p>I planned to start with what I think of as a good enough build server: A VM based on <strong><a class="zem_slink" title="Ubuntu" rel="homepage" href="http://www.ubuntu.com/">Ubuntu</a></strong> Server <strong><a title="Just enough operating system" rel="wikipedia" href="http://en.wikipedia.org/wiki/Just_enough_operating_system" target="_blank">JeOS</a></strong> with pre-configured installations of <strong><a rel="homepage" href="http://subversion.tigris.org/" target="_blank">Subversion</a></strong> (Source Control), <strong><a href="http://www.vmware.com/products/server/" target="_blank">Hudson</a></strong> (Continuous Integration), <strong><a href="http://sonar.codehaus.org/" target="_blank">Sonar</a></strong> (Quality Metrics), <strong><a class="zem_slink" title="MySQL" rel="homepage" href="http://www.mysql.com/">MySQL</a></strong> (to store Quality Metrics), <strong><a href="maven.apache.org/" target="_blank">Maven</a></strong> (Build) and <strong><a href="http://nexus.sonatype.org/" target="_blank">Nexus</a></strong> (Enterprise Maven Repository). Once this is all working I am going to also <a href="http://trac.edgewall.org/wiki/TracInstall" target="_blank">install</a> <strong><a href="http://trac.edgewall.org/" target="_blank">Trac</a></strong> (Wiki and issue tracking system). You might of course have your own preferences for tools to use for the tasks listed above. Feel free to swap out whatever tool you wish. You might already have an enterprise Maven repository. Fine, just use your existing one. All I am saying is, these tools will be on my build server VM; pre-configured as much as possible with standards found in the tools&#8217; documentation, following the <a href="http://en.wikipedia.org/wiki/Convention_over_configuration" target="_blank"><strong>convention over configuration</strong></a> paradigm.</p>
<h4>Creating the VM</h4>
<p>Here is how I am planning to create my Java build server VM. I am using <a href="http://www.vmware.com/appliances/getting-started/learn/vmware_studio.html" target="_blank">VMware Studio</a> to create the VM. VMware Studio is a Virtual Appliance itself and I deployed it in <a href="http://www.vmware.com/products/server/" target="_blank">VMware Server 2.0</a>. First I created a basic VM based on Ubuntu 8.04.1. Studio automatically installs VMware tools and embeds an in-guest management component called Virtual Appliance Management Infrastructure (VAMI), which lets you configure the network settings of your VM after it has been built. This is essential, since you want your development team to be able to connect to your copy of the build server VM. Here is a list of the essential settings I used to create the base VM:</p>
<ul>
<li>ubuntu-8.04.1-dvd-i386</li>
<li>1 CPU</li>
<li>512 MB RAM</li>
<li>8 GB</li>
<li>Network settings: DHCP (to automatically find an IP address)</li>
<li>Target format: zip</li>
</ul>
<p>After the build finished, I downloaded the zipped VM and deployed it on my VMware Server instance. I started the VM and assigned it a static IP address on the boot screen. I logged in and carried out the following steps:</p>
<ul>
<li>Update Ubuntu (sudo apt-get update &amp;&amp; sudo apt-get upgrade)</li>
<li><a href="https://help.ubuntu.com/community/Repositories/CommandLine" target="_blank">Add the universe and multiverse Ubuntu repositories</a></li>
<li><a href="http://www.howtogeek.com/howto/linux/installing-tomcat-6-on-ubuntu/" target="_blank">Install Java and Tomcat</a> (with admin packages)</li>
<li><a href="http://odyniec.net/articles/ubuntu-subversion-server/" target="_blank">Install Subversion</a> (SVN)</li>
<li><a href="http://www.sonatype.com/books/maven-book/reference/installation-sect-maven-linux.html" target="_blank">Install Maven</a></li>
<li><a href="https://help.ubuntu.com/8.04/serverguide/C/mysql.html" target="_blank">Install MySQL</a></li>
<li><a href="http://hudson-ci.org/" target="_blank">Deploy Hudson</a> to Tomcat</li>
<li><a href="http://docs.codehaus.org/display/SONAR/Install+Sonar" target="_blank">Deploy Sonar</a> to Tomcat</li>
<li><a href="http://www.sonatype.com/books/nexus-book/reference/ch02s02.html" target="_blank">Deploy Nexus</a> to Tomcat</li>
</ul>
<h4>Using the VM</h4>
<p>Of course there are some project and company specific configurations that cannot be set in advance. Here is what is left to do:</p>
<ul>
<li>Install a VM container on a server (e.g. <a href="http://www.vmware.com/products/server/" target="_blank">VMware Server</a>)</li>
<li><a href="https://launchpad.net/java-build-server" target="_blank">Download</a> and start the VM in your container</li>
<li>Set the network details on the boot screen</li>
<li>Add your developers as users to Subversion (in /usr/local/svn/passwd-team)</li>
<li>Create a project</li>
<li>Create Hudson jobs to monitor your project</li>
</ul>
<h4><strong>What&#8217;s next?</strong></h4>
<p>To make using this Java build server even easier I am also planning to create the following:</p>
<ul>
<li>a <strong><a href="http://maven.apache.org/plugins/maven-archetype-plugin/" target="_blank">Maven archetype</a></strong> that only needs the IP address of the build server to be configured</li>
<li>a <strong>script to create a new project</strong> on the build server (create SVN project, create Hudson jobs, etc.)</li>
</ul>
<h6>Image by <a href="http://www.flickr.com/photos/44124412397@N01/3204450759">indigoprime</a> via Flickr</h6>
<br /> Tagged: Build Server, Continuous Integration, Hudson, Java, Maven, Nexus, Sonar, Subversion, Ubuntu <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/qualityswdev.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/qualityswdev.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/qualityswdev.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/qualityswdev.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/qualityswdev.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/qualityswdev.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/qualityswdev.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/qualityswdev.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/qualityswdev.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/qualityswdev.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/qualityswdev.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/qualityswdev.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/qualityswdev.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/qualityswdev.wordpress.com/85/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=qualityswdev.com&#038;blog=10101488&#038;post=85&#038;subd=qualityswdev&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://qualityswdev.com/2010/01/23/java-build-server/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9e8234609df154fdd93a08a885103a16?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">kueblboe</media:title>
		</media:content>

		<media:content url="http://farm4.static.flickr.com/3452/3204450759_acf201a8f8_m.jpg" medium="image" />
	</item>
	</channel>
</rss>
