<?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>Sonatype Blog &#187; continuous integration</title>
	<atom:link href="http://blog.sonatype.com/people/tag/continuous-integration/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.sonatype.com/people</link>
	<description>Sonatype is transforming software development with tools, information and services that enable organizations to build better software, faster, using open-source components.</description>
	<lastBuildDate>Thu, 16 May 2013 18:53:09 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Webinar Replay Now Available: Insight for CI Demo</title>
		<link>http://blog.sonatype.com/people/2012/05/webinar-replay-now-available-insight-for-ci-demo/</link>
		<comments>http://blog.sonatype.com/people/2012/05/webinar-replay-now-available-insight-for-ci-demo/#comments</comments>
		<pubDate>Thu, 31 May 2012 15:03:57 +0000</pubDate>
		<dc:creator>Emily Blades</dc:creator>
				<category><![CDATA[Hudson]]></category>
		<category><![CDATA[Insight]]></category>
		<category><![CDATA[Webinar]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[jenkins]]></category>
		<category><![CDATA[OSS security]]></category>
		<category><![CDATA[Sonatype webinar]]></category>

		<guid isPermaLink="false">http://www.sonatype.com/people/?p=11505</guid>
		<description><![CDATA[A big thanks to all of you who registered and attended our Insight for CI Demo last week. We had a great turnout and a lot of fantastic questions! If you didn’t have a chance to register, that doesn’t mean you have to miss out. The replay is now available. Request the webinar recording here. [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.sonatype.com/people/2012/05/new-webinar-gain-visibility-control-at-build-time-with-insight-for-ci/blog_header_ciwebinarlaunch-3/" rel="attachment wp-att-11398"><img class="aligncenter size-full wp-image-11398" title="blog_header_CIWebinarLaunch" src="http://www.sonatype.com/people/wp-content/uploads/2012/05/blog_header_CIWebinarLaunch2.png" alt="" width="700" height="200" /></a></p>

<p>A big thanks to all of you who registered and attended our Insight for CI Demo last week. We had a great turnout and a lot of fantastic questions! If you didn’t have a chance to register, that doesn’t mean you have to miss out. The replay is now available.</p>

<p><a href="http://sonatype.com/Request/Webinar/Insight-for-CI-Demo-Gain-Visibility-Control-At-Build-Time?webinar=CILaunchReplay_Blog&amp;utm_source=Blog&amp;utm_medium=Post&amp;utm_campaign=CILaunchReplay" target="_blank"><strong>Request the webinar recording here.</strong> </a></p>

<p>Ready to try Insight for CI for yourself? Let us help you <a href="http://sonatype.com/Products/Sonatype-Insight/Insight-for-CI" target="_blank"><strong>get started</strong></a>.</p>

<p>Thank you!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sonatype.com/people/2012/05/webinar-replay-now-available-insight-for-ci-demo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Last Chance To Register: Insight for CI Demo</title>
		<link>http://blog.sonatype.com/people/2012/05/last-chance-to-register-insight-for-ci-demo/</link>
		<comments>http://blog.sonatype.com/people/2012/05/last-chance-to-register-insight-for-ci-demo/#comments</comments>
		<pubDate>Tue, 22 May 2012 13:11:56 +0000</pubDate>
		<dc:creator>Emily Blades</dc:creator>
				<category><![CDATA[Hudson]]></category>
		<category><![CDATA[Insight]]></category>
		<category><![CDATA[Webinar]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[Insight for CI]]></category>
		<category><![CDATA[Sonatype webinar]]></category>

		<guid isPermaLink="false">http://www.sonatype.com/people/?p=11401</guid>
		<description><![CDATA[Join Brian Fox tomorrow, Wednesday, May 23 at 11AM EDT or 2PM EDT (GMT-0400) for a 30 minute tour of Insight for CI. In this demo, Brian will show how Insight for CI will help you: Generate a detailed bill of materials for every build in Hudson and Jenkins. Find and fix license, security and [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.sonatype.com/people/2012/05/new-webinar-gain-visibility-control-at-build-time-with-insight-for-ci/blog_header_ciwebinarlaunch-3/" rel="attachment wp-att-11398"><img class="aligncenter size-full wp-image-11398" title="blog_header_CIWebinarLaunch" src="http://www.sonatype.com/people/wp-content/uploads/2012/05/blog_header_CIWebinarLaunch2.png" alt="" width="700" height="200" /></a></p>

<p>Join Brian Fox tomorrow, Wednesday, May 23 at 11AM EDT or 2PM EDT (GMT-0400) for a 30 minute tour of Insight for CI. In this demo, Brian will show how Insight for CI will help you:</p>

<ul>
    <li>Generate a detailed bill of materials for every build in Hudson and Jenkins.</li>
    <li>Find and fix license, security and quality problems quickly.</li>
    <li>Set rules to notify you of problems, fail builds, or establish workflows.</li>
</ul>

<p>If you register, you&#8217;ll also receive access to the recording after the event. So if something comes up and you can&#8217;t make it, you won&#8217;t miss out.</p>

<p>Two sessions are available tomorrow, Wednesday, May 23. Choose the best time for you:</p>

<p><strong><a href="http://sonatype.com/Request/Webinar-Registration/Introducing-Insight-for-CI-Visibility-Control-At-Build-Time?webinar=CILaunch_Blog&amp;utm_source=Blog&amp;utm_medium=Post&amp;utm_campaign=CILaunchWebinar" target="_blank">Register – 11:00AM EDT (GMT-0400) </a></strong></p>

<p><strong><a href="http://sonatype.com/Request/Webinar-Registration/Introducing-Insight-for-CI-Visibility-Control-At-Build-Time2?webinar=CILaunch_BlogPreso2&amp;utm_source=BlogPreso2&amp;utm_medium=Post&amp;utm_campaign=CILaunchWebinar" target="_blank">Register – 2:00PM EDT (GMT-0400)</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sonatype.com/people/2012/05/last-chance-to-register-insight-for-ci-demo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Insight for CI Demo: Additional Session Added</title>
		<link>http://blog.sonatype.com/people/2012/05/insight-for-ci-demo-additional-session-added/</link>
		<comments>http://blog.sonatype.com/people/2012/05/insight-for-ci-demo-additional-session-added/#comments</comments>
		<pubDate>Fri, 18 May 2012 15:24:29 +0000</pubDate>
		<dc:creator>Emily Blades</dc:creator>
				<category><![CDATA[Hudson]]></category>
		<category><![CDATA[Insight]]></category>
		<category><![CDATA[Sonatype]]></category>
		<category><![CDATA[Webinar]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[Sonatype webinar]]></category>

		<guid isPermaLink="false">http://www.sonatype.com/people/?p=11380</guid>
		<description><![CDATA[Due to high demand, we have added a second webinar presentation next Wednesday at 2PM EDT (GMT-0400) to accommodate multiple time zones. Here are the details for the presentation: Join Brian Fox this Wednesday, May 23 at 11AM EDT or 2PM EDT (GMT-0400) for a 30 minute tour of Insight for CI. In this demo, [...]]]></description>
				<content:encoded><![CDATA[<p><img src="http://www.sonatype.com/people/wp-content/uploads/2012/05/blog_header_CIWebinarLaunch1.png" alt="" title="blog_header_CIWebinarLaunch" width="700" height="200" class="alignleft size-full wp-image-11396" style="padding-bottom:20px;"/></p>

<p>Due to high demand, we have added a second webinar presentation next Wednesday at 2PM EDT (GMT-0400) to accommodate multiple time zones. Here are the details for the presentation:</p>

<p>Join Brian Fox this Wednesday, May 23 at 11AM EDT or 2PM EDT (GMT-0400) for a 30 minute tour of Insight for CI. In this demo, Brian will show how Insight for CI will help you:</p>

<ul>
    <li>Generate a detailed bill of materials for every build in Hudson and Jenkins.</li>
    <li>Find and fix license, security and quality problems quickly.</li>
    <li>Set rules to notify you of problems, fail builds, or establish workflows.</li>
</ul>

<p>If you register, you&#8217;ll also receive access to the recording after the event. So if something comes up and you can&#8217;t make it, you won&#8217;t miss out.</p>

<p>Two sessions are now available on Wednesday, May 23. Choose the best time for you:</p>

<p><a href="http://sonatype.com/Request/Webinar-Registration/Introducing-Insight-for-CI-Visibility-Control-At-Build-Time?webinar=CILaunch_Blog&amp;utm_source=Blog&amp;utm_medium=Post&amp;utm_campaign=CILaunchWebinar" target="_blank"><strong>Register – 11:00AM EDT (GMT-0400)</strong> </a></p>

<p><a href="http://sonatype.com/Request/Webinar-Registration/Introducing-Insight-for-CI-Visibility-Control-At-Build-Time2?webinar=CILaunch_BlogPreso2&amp;utm_source=BlogPreso2&amp;utm_medium=Post&amp;utm_campaign=CILaunchWebinar" target="_blank"><strong>Register – 2:00PM EDT (GMT-0400)</strong></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sonatype.com/people/2012/05/insight-for-ci-demo-additional-session-added/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Webinar: Gain Visibility &amp; Control At Build Time with Insight for CI</title>
		<link>http://blog.sonatype.com/people/2012/05/new-webinar-gain-visibility-control-at-build-time-with-insight-for-ci/</link>
		<comments>http://blog.sonatype.com/people/2012/05/new-webinar-gain-visibility-control-at-build-time-with-insight-for-ci/#comments</comments>
		<pubDate>Tue, 15 May 2012 11:33:03 +0000</pubDate>
		<dc:creator>Emily Blades</dc:creator>
				<category><![CDATA[Hudson]]></category>
		<category><![CDATA[Insight]]></category>
		<category><![CDATA[Webinar]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[Insight for CI]]></category>
		<category><![CDATA[Sonatype Insight]]></category>
		<category><![CDATA[Sonatype webinar]]></category>

		<guid isPermaLink="false">http://www.sonatype.com/people/?p=11318</guid>
		<description><![CDATA[Join Brian Fox Wednesday, May 23 at 11AM EDT (GMT-0400) for a 30 minute tour of our latest innovation, Insight for CI. Brian will show you how Insight for CI will help you: Gain visibility and control at build time in Hudson and Jenkins. Find and fix license, security and quality problems quickly. Set rules [...]]]></description>
				<content:encoded><![CDATA[<p><img src="http://www.sonatype.com/people/wp-content/uploads/2012/05/blog_header_CIWebinarLaunch2.png" alt="" title="blog_header_CIWebinarLaunch" width="700" height="200" class="alignleft size-full wp-image-11398" style="padding-bottom:20px;"/>
Join Brian Fox Wednesday, May 23 at 11AM EDT (GMT-0400) for a 30 minute tour of our latest innovation, <a title="Insight_for_CI" href="http://sonatype.com/Products/Sonatype-Insight/Insight-for-CI" target="_blank">Insight for CI</a>. Brian will show you how Insight for CI will help you:</p>

<ul>
    <li>Gain visibility and control at build time in Hudson and Jenkins.</li>
    <li>Find and fix license, security and quality problems quickly.</li>
    <li>Set rules to notify you of problems or to fail builds.</li>
</ul>

<p>If you register, you&#8217;ll also receive access to the recording after the event. So if something comes up and you can&#8217;t make it, you won&#8217;t miss out.</p>

<p><strong><a title="Webinar Registration" href="http://sonatype.com/Request/Webinar-Registration/Introducing-Insight-for-CI-Visibility-Control-At-Build-Time?webinar=CILaunch_Blog&amp;utm_source=Blog&amp;utm_medium=Post&amp;utm_campaign=CILaunchWebinar" target="_blank">Reserve Your Seat Here</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sonatype.com/people/2012/05/new-webinar-gain-visibility-control-at-build-time-with-insight-for-ci/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Last Chance! Webinar: Manage Your Components at Build Time in Hudson &amp; Jenkins</title>
		<link>http://blog.sonatype.com/people/2012/05/last-chance-webinar-manage-your-components-at-build-time-in-hudson-jenkins/</link>
		<comments>http://blog.sonatype.com/people/2012/05/last-chance-webinar-manage-your-components-at-build-time-in-hudson-jenkins/#comments</comments>
		<pubDate>Wed, 02 May 2012 11:32:15 +0000</pubDate>
		<dc:creator>Emily Blades</dc:creator>
				<category><![CDATA[Hudson]]></category>
		<category><![CDATA[Insight]]></category>
		<category><![CDATA[Webinar]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[webinar]]></category>

		<guid isPermaLink="false">http://www.sonatype.com/people/?p=11087</guid>
		<description><![CDATA[Know What&#8217;s In Your Builds? Join Brian Fox tomorrow, Thursday, May 3 at 11AM EDT (GMT-0400) for a 30 minute sneak preview of our latest innovation, Insight for CI. Brian will show you how Insight for CI will help you: Gain visibility and control at build time in Hudson and Jenkins. Find and fix license, [...]]]></description>
				<content:encoded><![CDATA[<p><a rel="attachment wp-att-10890" href="http://www.sonatype.com/people/2012/04/webinar-manage-your-os-components-at-build-time/webinar_header_manageossatbuildtime-1-2/"><img class="aligncenter size-full wp-image-10890" title="webinar_header_manageOSSAtBuildTime-1" src="http://www.sonatype.com/people/wp-content/uploads/2012/04/webinar_header_manageOSSAtBuildTime-11.png" alt="Manage_OS_Components_At_Build_Time" width="700" height="200" /></a></p>

<h4>Know What&#8217;s In Your Builds?</h4>

<p>Join Brian Fox tomorrow, Thursday, May 3 at 11AM EDT (GMT-0400) for a 30 minute sneak preview of our latest innovation, Insight for CI. Brian will show you how Insight for CI will help you:</p>

<ul>
    <li> Gain visibility and control at build time in Hudson and Jenkins.</li>
    <li> Find and fix license, security and quality problems quickly.</li>
    <li> Set rules to notify you of problems, fail builds, or establish workflows.</li>
</ul>

<p>If you register, you&#8217;ll also receive access to the recording after the  event. So if something comes up and you can&#8217;t make it, you won&#8217;t miss  out.</p>

<h4><strong><a href="http://sonatype.com/Request/Webinar-Registration/Manage-Your-OS-Components-At-Build-Time?webinar=CIPreview0512_blog&amp;utm_source=blog&amp;utm_medium=post&amp;utm_campaign=CIPreview" target="_blank">Reserve Your Seat</a></strong></h4>

<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sonatype.com/people/2012/05/last-chance-webinar-manage-your-components-at-build-time-in-hudson-jenkins/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Webinar: Manage Your OS Components At Build Time</title>
		<link>http://blog.sonatype.com/people/2012/04/webinar-manage-your-os-components-at-build-time/</link>
		<comments>http://blog.sonatype.com/people/2012/04/webinar-manage-your-os-components-at-build-time/#comments</comments>
		<pubDate>Mon, 16 Apr 2012 12:34:04 +0000</pubDate>
		<dc:creator>Emily Blades</dc:creator>
				<category><![CDATA[Insight]]></category>
		<category><![CDATA[Webinar]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[webinar]]></category>

		<guid isPermaLink="false">http://www.sonatype.com/people/?p=10873</guid>
		<description><![CDATA[Join Brian Fox for a 30 minute sneak preview of Insight for CI on Thursday, May 3 at 11AM EDT (GMT-0400). Brian will show you how Insight for CI will help you: Gain visibility and control at build time in Hudson and Jenkins Find and fix license, security and quality problems quickly Set rules to [...]]]></description>
				<content:encoded><![CDATA[<p><a rel="attachment wp-att-10890" href="http://www.sonatype.com/people/2012/04/webinar-manage-your-os-components-at-build-time/webinar_header_manageossatbuildtime-1-2/"><img class="aligncenter size-full wp-image-10890" title="webinar_header_manageOSSAtBuildTime-1" src="http://www.sonatype.com/people/wp-content/uploads/2012/04/webinar_header_manageOSSAtBuildTime-11.png" alt="Manage_OS_Components_At_Build_Time" width="700" height="200" /></a></p>

<p>Join Brian Fox for a 30 minute sneak preview of Insight for CI on Thursday, May 3 at 11AM EDT (GMT-0400). Brian will show you how Insight for CI will help you:</p>

<ul>
    <li> Gain visibility and control at build time in Hudson and Jenkins</li>
    <li> Find and fix license, security and quality problems quickly</li>
    <li> Set rules to notify you of problems or to fail builds</li>
</ul>

<p>If you register, you&#8217;ll also receive access to the recording after the event. So if something comes up and you can&#8217;t make it, you won&#8217;t miss out.</p>

<h4><a title="Reserve Your Seat" href="http://sonatype.com/Request/Webinar-Registration/Manage-Your-OS-Components-At-Build-Time?webinar=CIPreview0512_blog&amp;utm_source=Blog&amp;utm_medium=Post&amp;utm_campaign=CIPreview" target="_blank">Reserve Your Seat</a></h4>
]]></content:encoded>
			<wfw:commentRss>http://blog.sonatype.com/people/2012/04/webinar-manage-your-os-components-at-build-time/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Future of Hudson Continuous Integration</title>
		<link>http://blog.sonatype.com/people/2011/03/the-future-of-hudson-continuous-integration/</link>
		<comments>http://blog.sonatype.com/people/2011/03/the-future-of-hudson-continuous-integration/#comments</comments>
		<pubDate>Mon, 07 Mar 2011 15:00:00 +0000</pubDate>
		<dc:creator>hloney</dc:creator>
				<category><![CDATA[Hudson]]></category>
		<category><![CDATA[Sonatype]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[Sonatype webinar]]></category>

		<guid isPermaLink="false">http://www.sonatype.com/people/?p=7608</guid>
		<description><![CDATA[Sonatype founder and CTO Jason van Zyl will be hosting a free webinar on the future of Hudson next week. Register today before spots fill up Hudson is a continuous integration (CI) server that helps you check-out source code, build and test your project, publish the results and communicate the results to team members. We’ve [...]]]></description>
				<content:encoded><![CDATA[<p><!--dzoneZ=none-->Sonatype founder and CTO Jason van Zyl will be hosting a free webinar on the future of Hudson next week. <a href="https://sonatype.webex.com/cmp0306lc/webcomponents/widget/detect.do?siteurl=sonatype&amp;LID=1&amp;RID=2&amp;TID=4&amp;rnd=9719063396&amp;DT=-300&amp;DL=en-US&amp;isDetected=true&amp;backUrl=%2Fmw0306lc%2Fmywebex%2Fdefault.do%3Fnomenu%3Dtrue%26siteurl%3Dsonatype%26service%3D6%26main_url%3Dhttps%253A%252F%252Fsonatype.webex.com%252Fec0605lc%252Feventcenter%252Fevent%252FeventAction.do%253FtheAction%253Ddetail%2526confViewID%253D772496839%2526siteurl%253Dsonatype%2526%2526%2526" target="_blank">
</a></p>

<h4><a href="https://sonatype.webex.com/cmp0306lc/webcomponents/widget/detect.do?siteurl=sonatype&amp;LID=1&amp;RID=2&amp;TID=4&amp;rnd=9719063396&amp;DT=-300&amp;DL=en-US&amp;isDetected=true&amp;backUrl=%2Fmw0306lc%2Fmywebex%2Fdefault.do%3Fnomenu%3Dtrue%26siteurl%3Dsonatype%26service%3D6%26main_url%3Dhttps%253A%252F%252Fsonatype.webex.com%252Fec0605lc%252Feventcenter%252Fevent%252FeventAction.do%253FtheAction%253Ddetail%2526confViewID%253D772496839%2526siteurl%253Dsonatype%2526%2526%2526" target="_blank">Register today before spots fill up</a></h4>

<p>Hudson is a continuous integration (CI) server that helps you check-out source code, build and test your project, publish the results and communicate the results to team members. We’ve been working to make it easier to extend Hudson, to reduce the effort required to write a Hudson plugin, and to put in a new foundation for the next level of Hudson interoperability and performance. We’re excited about the work that has been done and the work yet to come. The benefits of these changes include better leveraging of industry standards, increased performance and stability, and tight integration with Maven 3 that provides greater visibility into running builds. Come to learn more about Hudson CI and future plans for the project.</p>

<h4>Webinar details:</h4>

<ul>
    <li><strong>Date</strong>: Tuesday, March 15, 2011</li>
    <li><strong>Time</strong>: 10:30 am Eastern Daylight Time (New York, GMT-04:00)</li>
    <li><strong>Presenter</strong>: Jason van Zyl, CTO &amp; Founder of Sonatype</li>
    <li><strong><a href="https://sonatype.webex.com/cmp0306lc/webcomponents/widget/detect.do?siteurl=sonatype&amp;LID=1&amp;RID=2&amp;TID=4&amp;rnd=4645638788&amp;DT=-300&amp;DL=en-US&amp;isDetected=true&amp;backUrl=/mw0306lc/mywebex/default.do%3Fnomenu%3Dtrue%26siteurl%3Dsonatype%26service%3D6%26main_url%3Dhttps%253A%252F%252Fsonatype.webex.com%252Fec0605lc%252Feventcenter%252Fevent%252FeventAction.do%253FtheAction%253Ddetail%2526confViewID%253D772496839%2526siteurl%253Dsonatype%2526%2526%2526" target="_blank">Register here</a></strong></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.sonatype.com/people/2011/03/the-future-of-hudson-continuous-integration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Learn about Continuous Integration with Hudson &amp; Matrix</title>
		<link>http://blog.sonatype.com/people/2010/11/learn-about-continuous-integration-with-hudson-matrix/</link>
		<comments>http://blog.sonatype.com/people/2010/11/learn-about-continuous-integration-with-hudson-matrix/#comments</comments>
		<pubDate>Fri, 19 Nov 2010 12:00:25 +0000</pubDate>
		<dc:creator>hloney</dc:creator>
				<category><![CDATA[Sonatype]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[Hudson]]></category>
		<category><![CDATA[Matrix]]></category>

		<guid isPermaLink="false">http://www.sonatype.com/people/?p=6495</guid>
		<description><![CDATA[Continuous Integration is a label for a set of tools and techniques that constantly build and report on the health of your applications, preventing developers from checking in broken code, and allowing your development teams to focus on continual improvement overall code quality. It lets you spot problems early in the development process, before testers [...]]]></description>
				<content:encoded><![CDATA[<p><!--dzoneZ=none-->Continuous Integration is a label for a set of tools and techniques that  constantly build and report on the health of your applications,  preventing developers from checking in broken code, and allowing your  development teams to focus on continual improvement overall code  quality. It lets you spot problems early in the development process,  before testers or end users discover them and fixes become more costly.</p>

<p>Our Senior Systems Engineer, Blaine  Mincey, will be presenting at <a href="http://chariotsolutions.com/events/ci" target="_blank">Chariot Solutions Continuous Integration  for the Enterprise</a> in Philadelphia on December 1, 2010.</p>

<p>The presentation will focus on:</p>

<ul>
<li>Outlining 7 tips for running Maven builds in a CI system</li>
<li>Introducing Hudson</li>
<li>A demonstration of Matrix, a component of Sonatype&#8217;s latest product  suite Sonatype Professional, which features Hudson Integration with  Eclipse-based tooling.</li>
</ul>

<p>If  you want to find out how the competition is moving ahead because they  don&#8217;t have to keep looking behind, this seminar is for you.</p>

<p>Seats are filling up quickly, be sure to <a href="http://chariotsolutions.com/events/ci" target="_blank">register today</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sonatype.com/people/2010/11/learn-about-continuous-integration-with-hudson-matrix/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Hudson Build Farm Experience, Volume IV</title>
		<link>http://blog.sonatype.com/people/2009/02/the-hudson-build-farm-experience-volume-iv/</link>
		<comments>http://blog.sonatype.com/people/2009/02/the-hudson-build-farm-experience-volume-iv/#comments</comments>
		<pubDate>Thu, 05 Feb 2009 16:16:30 +0000</pubDate>
		<dc:creator>John Casey</dc:creator>
				<category><![CDATA[How-To]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[esxi]]></category>
		<category><![CDATA[Hudson]]></category>
		<category><![CDATA[vmware]]></category>

		<guid isPermaLink="false">http://blogs.sonatype.com/people/?p=1551</guid>
		<description><![CDATA[In Progress: The Learning Curve We’re Still Climbing Now that we’ve covered the high points of our Hudson build farm setup here at Sonatype, I want to discuss some of the current issues we’re facing at the moment. It’s important to realize that providing high-quality continuous integration is a long, involved process…not a quick, one-off [...]]]></description>
				<content:encoded><![CDATA[<h2>In Progress: The Learning Curve We’re Still Climbing</h2>

<p>Now that we’ve covered the high points of our Hudson build farm setup here at Sonatype, I want to discuss some of the current issues we’re facing at the moment. It’s important to realize that providing high-quality continuous integration is a long, involved process…not a quick, one-off event. Sure, you can get Hudson up and running fairly rapidly in a non-distributed environment. However, the path to distributed, multi-OS builds that capture a full range of testing can be very, very complex. In the end, if you can get by simply compensating for the problems I talked about in this series of posts, then you’re probably pretty lucky. Here at Sonatype, we’re certainly very conscious of the fact that our continuous integration setup could run more perfectly, and we continue to chip away at the list of things we’d like Hudson to verify automatically on our behalf. So, in the interests of full disclosure, I’m including a short wish list of items we’re currently working on.
<span id="more-1551"></span></p>

<h2>1. Cross-OS Path Translation</h2>

<p>I mentioned this previously, in my second build-farm post. Currently, there is very little ability to manage the Java versions used in a build orchestrated from a Linux Hudson master instance and executed on a Windows Hudson slave instance. This is a particular problem in cases such as the Maven bootstrapping process, where one Java process spawns another. In the case of the Maven bootstrap, an Ant build produces a crude version of the Maven binaries that is then used to run the real Maven build, which in turn is used to run the Maven core integration tests. Yes, this is a very complex, involved way of doing things…but it has the advantage of being pretty self-contained, and it checks a whole lot of assumptions about Maven and your build environment in the process. Since this is such a demanding build, it’s perhaps inevitable that it will act like a canary in the mineshaft for things like invalid <code>JAVA_HOME</code> environment variables like those passed from a Linux-based orchestration system to a Windows-based execution system. As you might expect, the all of the paths passed from one to the other are completely wrong. In fact, the only way to run the Maven bootstrap on this sort of build farm is to use the default <code>JAVA_HOME</code> envar setup in the slave startup process. This startup process is necessarily different for *nix and Windows Hudson slaves, so you can take advantage of this and cheat the build in a way.</p>

<p>However, when the Hudson slave instance uses Java 1.5 and you want to verify that the Maven codebase doesn’t accidentally include Java5-specific APIs (yes, this is a common problem), you need the ability to force the Maven bootstrap to use JDK 1.4 instead. Currently, this is impossible. One reasonable solution might be to allow each environment to define a custom envar &#8211; say, $JAVA14_HOME &#8211; then use that in the definition for a Java version in Hudson. This way, each Hudson slave could interpret this envar locally and have access to the correct path for that JDK. Fortunately, we may have some help on the way in the form of a patch posted against Hudson bug <a href="https://hudson.dev.java.net/issues/show_bug.cgi?id=2918">#2918</a> that implements exactly this sort of solution. Tom, please rest assured that I’m very excited about your patch, and I’m going to resume efforts to test it and get it deployed in our farm ASAP once I’m done with this post!</p>

<h2>2. Management of Related Builds</h2>

<p>Currently, we have multiple different flavors of build happening out on the build farm for a single project &#8211; Nexus, for example. We have builds for the 1.2.x branch of Nexus, and others for the trunk (currently progressing towards 1.3). In addition, we’re interested in smoke tests for these builds, since integration testing can take quite awhile…so, we have one build run for each branch that simply builds the project including unit tests, and another that builds the branch with integration tests enabled, to satisfy our longer-term concern that all use cases remain satisfied. The result is a proliferation of jobs out on the build farm, each of which executes on all available operating systems. This means that each build fills one executor on each slave, and that changes in both branches (such as a common configuration that changes and gets merged across from one branch to the other) can easily fill up all available executor slots, clogging the entire build farm for a significant period of time.</p>

<p>Clogging is bad enough. However, to strike a balance between the proliferation of different build types in Hudson and the disk space consumed by separate local repositories used to provide isolation between jobs, we’re actually using the same local repository location for all Nexus builds. This means we run the risk of having two (or more) Nexus builds run over one another in terms of artifact downloads, which produces phantom build failures (it’s effectively a race condition that has nothing to do with the code and everything to do with the build environment). In order to avoid this situation, we’re using the Locks and Latches Hudson plugin to ensure that only one of these related builds runs at a time. This seems to be an effective solution to the problems associated with concurrent builds using the same local repository.</p>

<p>Except now we’re left wondering, “at what cost?” since Locks and Latches seems not to be designed for a distributed environment. Or, if it is, it’s meant to control access to some external resource, and we’re misusing it…but relying on external resources for testing is generally a bad idea, so…well, anyway, I digress. In any event, Locks and Latches giveth, and Locks and Latches taketh away. What we gain in terms of build stability from this plugin we lose in terms of execution time for the job as a whole. Locks and Latches constrains all jobs using a particular lock, so that only one can execute at a time. The problem is, the lock is shared for all relevant jobs <em>on all slaves</em> which means that each Nexus build will only build on one slave at a time, and won’t run as long as another Nexus build is running. The net effect is to take a fairly long build process and make it unbelievably longer, to the point where it’s unclear that we actually gain any benefit by defining separate integration-test and non-integration-test builds…they all wait on the same lock, so the extra job definitions may actually have the opposite effect in some cases.</p>

<p>A better solution would allow a job’s myriad slave executions to run in parallel &#8211; why not, they’re on separate machines after all &#8211; but restricts jobs sharing a particular lock to run serially with respect to one another. I short, exactly what the Locks and Latches plugin does, except instead of applying the locking mechanism after Hudson distributes the job to slave instances and clogs their executors, it would apply to the master build queue <strong>ahead of</strong> distributed queueing. This is on my TODO list as a bug to file in Hudson, but if anyone has a better solution I’m all ears…please let me know!</p>

<h2>3. Builds Requiring Graphical Environments</h2>

<p>We have some builds in our portfolio &#8211; notably, m2eclipse and some other Flex-based projects &#8211; that require a graphical environment in order to run their tests. It’s simply the nature of these projects that they can only execute in a graphical environment. For example, m2eclipse is a plugin for Eclipse, and it doesn’t really make much sense to run Eclipse in a headless environment. For builds, sure; for tests (and the use-case execution that implies), no.</p>

<p>In our legacy environment, we have Xvfb setup for m2eclipse and other projects, but at some point we’re going to have to learn how to migrate these builds over to our farm. After all, these projects have the same needs, to be exercised and tested on any operating system on which we expect them to work. For the most part, this should be a relatively straightforward &#8211; if not easy &#8211; task. Setting up Xvfb on <em>nix machines including Solaris, OS X, and Linux, *shouldn’t</em> be too difficult in theory. There’s even a Hudson plugin that can manage a Xvnc process for you, starting it before the build and shutting it down afterwards. So, can you guess why we haven’t migrated our graphical builds out to the farm yet?</p>

<p>Yup. Windows. The Xvnc plugin, for instance, requires a minimal configuration: the path to Xvnc. Great, what do I tell Hudson for Xvnc, that will also work on Windows? Remember, we’re launching the Hudson slave as a Windows process, only using Cygwin to make the SSH connection. It didn’t work very well (read: not at all) to try launching the slave instance from within Cygwin, and it’s unclear that we’d actually be testing our builds in a Windows environment if we could do that. And this problem is for a plugin that Hudson provides; what if Xvnc doesn’t cut it, and we really need something more like Xvfb or even X itself? We may travel a ways down the road to fixing this if we can provide slave-specific environment variables, as I described above; but we can’t simply <em>turn off</em> a command selectively in one slave environment and not in others.</p>

<p>Hudson enforces a degree of uniformity among it slaves that is really at the heart of the problems we have including Windows in the mix. I don’t think Hudson is wrong to do this, at least to some extent…but it does inflict a lot of pain at times. At the moment, we’re still coming to terms with the depth of the problem when it comes to graphical builds. Unfortunately, that means all I have for the moment is a description of the problem as I understand it. I don’t know whether this is the full extent of the problem, and as a result, can’t really believe that I can see a workable solution yet. If anyone has experiences with this, again I’m very interested to hear from you!</p>

<h2>Essential Equipment and Resources</h2>

<p>Okay, now that I’m done whining (for now), I want to end this post with some software and information I’ve found indispensable during this process. Hopefully, these can help make your experience a little less rocky.</p>

<ol>
    <li>OS X Equipment
<ol>
    <li><a href="http://sourceforge.net/projects/cotvnc/">Chicken of the VNC</a></li>
    <li><a href="http://www.parallels.com/">Parallels</a> (VMWare Infra Client GUI only runs on Windows)</li>
    <li><a href="http://iterm.sourceforge.net/">iTerm</a></li>
    <li><a href="http://www.microsoft.com/mac/products/remote-desktop/default.mspx">Microsoft RDC</a> (Remote Desktop Client for OS X)</li>
</ol>
</li>
    <li>Manuals, How-Tos, References
<ol>
    <li><a href="http://wikis.sun.com/display/OpenSolarisInfo/OpenSolaris+System+Administration+Guide">OpenSolaris SysAdmin Guide</a> (This isn’t the one I used, but it looks very similar…maybe just a different format from the PDF I found.)</li>
    <li><a href="http://technet.microsoft.com/en-us/library/cc749145.aspx">Windows W32Time How-To</a> (NTP on Windows Vista)</li>
    <li><a href="http://pigtail.net/LRP/printsrv/vista-cygwin.txt">Cygwin+SSHd on Vista</a> (bare-bones instructions, but they do work)</li>
    <li><a href="http://www.howtogeek.com/howto/windows-vista/using-symlinks-in-windows-vista/">Symlinking on Windows Vista &#8211; Mklink</a></li>
    <li><a href="http://www.vmware.com/pdf/vmware_timekeeping.pdf">VMWare and Timekeeping Reference</a> (PDF)</li>
    <li><a href="http://ivoras.sharanet.org/freebsd/vmware.html">FreeBSD on VMWare and other tips</a> (Good information about running virtualized systems)</li>
</ol>
</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blog.sonatype.com/people/2009/02/the-hudson-build-farm-experience-volume-iv/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maven Continuous Integration Best Practices</title>
		<link>http://blog.sonatype.com/people/2009/01/maven-continuous-integration-best-practices/</link>
		<comments>http://blog.sonatype.com/people/2009/01/maven-continuous-integration-best-practices/#comments</comments>
		<pubDate>Fri, 16 Jan 2009 04:46:15 +0000</pubDate>
		<dc:creator>Brian Fox</dc:creator>
				<category><![CDATA[How-To]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[best practice]]></category>
		<category><![CDATA[ci]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[Hudson]]></category>

		<guid isPermaLink="false">http://blogs.sonatype.com/people/?p=1393</guid>
		<description><![CDATA[Continuous Integration is a development best practice that you need to be using in your process; it is an essential part of an efficient Software Development Lifecycle (SLDC).   If you aren&#8217;t using it already, then you should start, now.   The main benefit of Continuous Integration is the ability to flag errors as they are [...]]]></description>
				<content:encoded><![CDATA[<p><img class="alignright size-thumbnail wp-image-1401" title="maven-ci-best-practices" src="http://blogs.sonatype.com/people/wp-content/uploads/2009/01/maven-ci-best-practices.png" alt="" width="115" height="94" />Continuous Integration is a development best practice that you need to be using in your process; it is an essential part of an efficient Software Development Lifecycle (SLDC).   If you aren&#8217;t using it already, then you should start, now.   The main benefit of Continuous Integration is the ability to flag errors as they are introduced into a system instead of waiting multiple days for test failures and critical errors to be identified during the QA cycle.  This post isn&#8217;t about the virtues of using CI, it&#8217;s about how to setup an optimal environment in a Maven shop.  Here are seven tips for running Maven builds in a CI system such as Hudson.<span id="more-1393"></span></p>

<p><strong>#1 Automate Snapshot Deployment</strong></p>

<p>In my experience, it is best to let your CI system deploy your snapshots. This is the most reliable way to guarantee that the contents of your repository are kept in sync with your source control system. In order to do this in a practical way, you need to couple CI with a repository manager like <a href="http://www.sonatype.com/products/nexus">Nexus</a> that can automatically purge snapshots. I&#8217;ve managed projects that produced &gt;300gb of snapshots in less than a week. Using a repository manager will save your sanity.</p>

<p><strong>#2 Isolate Local Repostitories</strong></p>

<p>Another critical component of a good CI setup is local repository isolation. The local repository in Maven is the temporary holding spot for all artifacts downloaded and produced by Maven, and it is not currently setup to be multi-process safe.   There is a remote possibility of a conflict, but it does exist.</p>

<p>The main reason I like to have a local repository per project is that it&#8217;s the only way to test that your project is build-able against the artifacts in the corporate repository. If you don&#8217;t have separate local repos, then the product on one build will be seen by another build on CI, even if it&#8217;s not in the corporate repository. This is important since one function of CI should be to validate that the code is buildable by a real developer.</p>

<p><em>Tip: use -Dmaven.repo.local=xxxx to define the unique local repositories for each build.</em></p>

<p><strong>#3 Regularly Purge Local Repositories</strong></p>

<p>To further validate the contents of the repository, and to manage the disk space, I purge the local repostories every night. This way if changes in the repository or artifacts are removed, the CI system will detect this. To keep it easy to purge all the local repositories, I tend to structure them under a single common folder such as /opt/repos/*.</p>

<p>Obviously having many local repositories requires more disk space than a single monolitic one due to dependency duplication, but even on our <a href="http://grid.sonatype.org/ci">large grid</a> the repos are less than 10gb total. Local repos get giant when you don&#8217;t control the snapshots and purging them nightly keeps this under control.</p>

<p><em>Tip: use your CI system itself to schedule the local repo cleanup. This way anyone can clean the repos manually right from the UI if Maven gets confused.</em></p>

<p><em>Over time, I&#8217;ve also picked up a few more simple tricks:</em></p>

<p><em><strong>#4 Enable Batch Mode</strong></em></p>

<p><em><em>Tip: Enable -B (batch) mode on the build.</em> This will make the logs shorter since it avoids the dependency download progress logging. It also ensures that the build won&#8217;t hang due to waiting for user input. </em><em>(to enable globally in settings.xml:&lt;interactiveMode&gt;false&lt;/interactiveMode&gt;)</em></p>

<p><em><strong>#5 Enable Full Stack Traces</strong></em></p>

<p><em><em>Tip: Enable -e to cause Maven to produce the full stack trace if there&#8217;s a build exception.</em> This will make it easier to comprehend any problems in the resulting build failure log/email without having to build it again.</em></p>

<p><em><strong>#6 Print Test Failures to Standard Output</strong></em></p>

<p><em><em>Tip: Enable -Dsurefire.useFile=false.</em> This is a favorite of mine since this causes surefire to print test failures to standard out, where it will get included in the build failure log and email. This saves you from having to dig back onto the machine to find the surefire report just to see a simple stack trace. (to enable globally in settings.xml:&lt;properties&gt;&lt;surefire.useFile&gt;true&lt;/surefire.useFile&gt;&lt;/properties&gt; in an active profile)</em></p>

<p><em><strong>#7 Always check for Snapshots</strong></em></p>

<p><em><em>Tip: Enable -U to cause Maven to always check for new snapshots.</em> (to enable globally in settings.xml: &lt;updatePolicy&gt;always&lt;/updatePolicy&gt;&#8230;.this goes on a repository definition) </em></p>

<p><em><strong>Summary</strong></em></p>

<p><em>Using the above settings and process causes every build to push the artifacts to the repository. The next downstream build will have its own clean repo and check the repository manager for the latest snapshots. Then at least once a day, everything is dumped locally and all dependencies are pulled out of the repository manager.</em></p>

<p><em>Naturally, doing all of this updating and purging puts some network load between the CI and repository manager. This works best if they share a highspeed network. If your repository manager isn&#8217;t close to your CI system, then you should put one there, if only to proxy the artifacts and reduce the impact of the daily local repo purge.</em></p>

<p><em><strong>Note: </strong>If you are going to follow these tips, it is essential that you download a copy of <a href="http://nexus.sonatype.org">Nexus</a>, purging the contents of your local repository and downloading everything from the Central Maven repository once a day (per project) is exactly the sort of behavior that causes traffic problems on the Central Maven repo.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sonatype.com/people/2009/01/maven-continuous-integration-best-practices/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
