<?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>Xebia Blog &#187; Vincent Partington</title>
	<atom:link href="http://blog.xebia.com/author/vpartington/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.xebia.com</link>
	<description>Software development done right!</description>
	<lastBuildDate>Wed, 01 Feb 2012 00:30:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Continuous deployment with Atlassian Bamboo and XebiaLabs Deployit</title>
		<link>http://blog.xebia.com/2011/10/20/continuous-deployment-with-atlassian-bamboo-and-xebialabs-deployit/</link>
		<comments>http://blog.xebia.com/2011/10/20/continuous-deployment-with-atlassian-bamboo-and-xebialabs-deployit/#comments</comments>
		<pubDate>Thu, 20 Oct 2011 08:48:42 +0000</pubDate>
		<dc:creator>Vincent Partington</dc:creator>
				<category><![CDATA[Build tools]]></category>
		<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Xebia Labs]]></category>

	<!-- AutoMeta Start -->
	<category>bamboo</category>
	<category>atlassian</category>
	<category>continuous</category>
	<category>incompatibility</category>
	<category>push</category>
	<category>xebialabs</category>
	<category>deployit</category>
	<category>scale</category>
	<category>bamboo</category>
	<category>atlassian</category>
	<category>continuous</category>
	<category>incompatibility</category>
	<category>push</category>
	<category>xebialabs</category>
	<category>deployit</category>
	<category>scale</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=7935</guid>
		<description><![CDATA[Over the past five to ten years, continuous integration has become a no-brainer for every medium to large scale software development project. It&#8217;s hard to imagine going back to not having every commit (or push) automatically trigger a build of the code and, most importantly, a test run of of the code. That test run [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.xebialabs.com/wp-content/uploads/2011/10/LOGO_Bamboo_Transparent_Half_Size.png" alt="" title="LOGO_Bamboo_Transparent_Half_Size" width="332" height="98" align="right" /><br />
Over the past five to ten years, <a href="http://martinfowler.com/articles/continuousIntegration.html">continuous integration</a> has become a no-brainer for every medium to large scale software development project. It&#8217;s hard to imagine going back to <em>not</em> having every commit (or <a href="http://gitref.org/remotes/#push">push</a>) automatically trigger a build of the code and, most importantly, a test run of of the code. That test run will surely include <a href="http://www.extremeprogramming.org/rules/unittests.html">unit tests</a>, but setting it up to also run <a href="http://c2.com/cgi/wiki?IntegrationTest">integration tests</a> used to be harder. You&#8217;ll need to automatically deploy the application to the target middleware environment and then run the integration tests against that environment.</p>
<p>The Deployit plugin for the new 3.3 release of <a href="http://www.atlassian.com/software/bamboo/">Atlassian Bamboo</a> adds the enterprise-scale deployment capabilities of <a href="http://www.xebialabs.com/">XebiaLabs Deployit</a> to Bamboo. This allows you to speed up your development process by adding automated deployment to your continuous integration setup and make the the first step towards <a href="http://timothyfitz.wordpress.com/2009/02/08/continuous-deployment/">continuous deployment</a> and <a href="http://continuousdelivery.com/">continuous delivery</a>. Instead of deployment being a bottleneck to your development process, it will be be an integrated part of it. You can test your application on the target platform as soon as possible, find any platform incompatibility and deployment issues early on, and, when it&#8217;s time to deploy to the production environment, your deployment will be quick and reliable.</p>
<p> <a href="http://blog.xebialabs.com/2011/10/20/continuous-deployment-with-atlassian-bamboo-and-xebialabs-deployit/#more-5882" class="more-link">read more</a></p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2011/10/20/continuous-deployment-with-atlassian-bamboo-and-xebialabs-deployit/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2011%2F10%2F20%2Fcontinuous-deployment-with-atlassian-bamboo-and-xebialabs-deployit%2F&amp;title=Continuous%20deployment%20with%20Atlassian%20Bamboo%20and%20XebiaLabs%20Deployit" id="wpa2a_2"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2011/10/20/continuous-deployment-with-atlassian-bamboo-and-xebialabs-deployit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Leveraging the IBM Workload Deployer CLI to automate WebSphere application deployment</title>
		<link>http://blog.xebia.com/2011/08/15/leveraging-the-ibm-workload-deployer-cli-to-automate-websphere-application-deployment/</link>
		<comments>http://blog.xebia.com/2011/08/15/leveraging-the-ibm-workload-deployer-cli-to-automate-websphere-application-deployment/#comments</comments>
		<pubDate>Mon, 15 Aug 2011 07:43:53 +0000</pubDate>
		<dc:creator>Vincent Partington</dc:creator>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Middleware]]></category>
		<category><![CDATA[Xebia Labs]]></category>

	<!-- AutoMeta Start -->
	<category>workload</category>
	<category>cloudburst</category>
	<category>cloudburst</category>
	<category>workloads</category>
	<category>deployer</category>
	<category>deploys</category>
	<category>appliance</category>
	<category>websphere</category>
	<category>workload</category>
	<category>cloudburst</category>
	<category>cloudburst</category>
	<category>workloads</category>
	<category>deployer</category>
	<category>deploys</category>
	<category>appliance</category>
	<category>websphere</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=7265</guid>
		<description><![CDATA[A few months ago I blogged about the integration between Deployit and IBM WebSphere CloudBurst (since renamed to IBM Workload Deployer). While that article gave an overview of the integration and included some nice screenshots, it did not really go into the details. Now is the time to explore the implementation of this integration.. Workload [...]]]></description>
			<content:encoded><![CDATA[<p><em>A few months ago I <a href="http://blog.xebialabs.com/2011/05/08/deployit-integrated-with-websphere-cloudburst-appliance-for-applications-on-demand/">blogged about the integration between Deployit and IBM WebSphere CloudBurst</a> (since renamed to IBM Workload Deployer). While that article gave an overview of the integration and included some nice screenshots, it did not really go into the details. Now is the time to explore the implementation of this integration.</em>.</p>
<p>
Workload Deployer V3</a> and <a href="http://www.xebialabs.com/features">Deployit</a> from <a href="http://www.xebialabs.com/">XebiaLabs</a> both &#8220;deploy&#8221; things, but they deploy different things.  Deployit deploys application artifacts and resources, such as EAR files and data sources, to middleware systems like IBM WebSphere Application Server (but also HTML to web servers, IBM WebSphere MQ configurations to queue managers, and so on). IBM Workload Deployer, on the other hand, deploys patterns (or topologies) of virtual images to hypervisors &#8212; but not just any kind of virtual images. IBM Workload Deployer is especially geared toward deploying middleware topologies.</p>
<p>
IBM Workload Deployer V3 is an updated and enhanced version of the  WebSphere CloudBurst Appliance, renamed to reflect the expanded scope of workloads it can deploy, which are no longer limited to only WebSphere workloads.  The content for this article (including screen captures) was created using a WebSphere CloudBurst Appliance, but everything noted here is equally applicable to IBM Workload Deployer V3.  However, for the sake of consistency with the images presented, &#8220;WebSphere CloudBurst&#8221; is used throughout this article to refer to both products.</p>
<p>
In other words, IBM Workload Deployer deploys the middleware systems and Deployit deploys applications to those middleware systems &#8212; complementary functionalities that form a perfect fit.</p>
<p>
At XebiaLabs, we have been working on two exciting new integrations for Deployit. We created a Deployit plugin that enables you to deploy EAR files directly to virtual systems created by IBM Workload Deployer V3 or its predecessor, IBM WebSphere CloudBurst Appliance V2. We also created a WebSphere CloudBurst script package to deploy application artifacts and resources on newly created virtual systems.</p>
<p>
This article explores two integrations between WebSphere CloudBurst and Deployit as a way of showing how you can leverage the WebSphere CloudBurst command line interface and script packages to integrate cloud deployment with your application deployment automation solution.</p>
<p>
<a href=http://www.ibm.com/developerworks/websphere/techjournal/1108_inreach/1108_inreach.html?ca=drs-" class="more-link">(more&#8230;)</a></p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2011/08/15/leveraging-the-ibm-workload-deployer-cli-to-automate-websphere-application-deployment/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2011%2F08%2F15%2Fleveraging-the-ibm-workload-deployer-cli-to-automate-websphere-application-deployment%2F&amp;title=Leveraging%20the%20IBM%20Workload%20Deployer%20CLI%20to%20automate%20WebSphere%20application%20deployment" id="wpa2a_4"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2011/08/15/leveraging-the-ibm-workload-deployer-cli-to-automate-websphere-application-deployment/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Deployit integrated with DPAdmin for heterogeneous deployments to IBM DataPower appliances</title>
		<link>http://blog.xebia.com/2011/07/06/deployit-integrated-with-dpadmin-for-heterogeneous-deployments-to-ibm-datapower-appliances/</link>
		<comments>http://blog.xebia.com/2011/07/06/deployit-integrated-with-dpadmin-for-heterogeneous-deployments-to-ibm-datapower-appliances/#comments</comments>
		<pubDate>Wed, 06 Jul 2011 16:51:04 +0000</pubDate>
		<dc:creator>Vincent Partington</dc:creator>
				<category><![CDATA[Deployment]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[Xebia Labs]]></category>

	<!-- AutoMeta Start -->
	<category>datapower</category>
	<category>xi50</category>
	<category>xa35</category>
	<category>xs40</category>
	<category>workload</category>
	<category>appliances</category>
	<category>appliance</category>
	<category>cloudburst</category>
	<category>datapower</category>
	<category>xi50</category>
	<category>xa35</category>
	<category>xs40</category>
	<category>workload</category>
	<category>appliances</category>
	<category>appliance</category>
	<category>cloudburst</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=7087</guid>
		<description><![CDATA[In a previous blog I talked about the integration we&#8217;ve achieved between XebiaLabs&#8217; Deployit and IBM&#8217;s Workload Deployer (still called WebSphere CloudBurst Appliance at the time) to allow users to deploy Java EE packages straight to a private cloud environment managed by IBM Workload Deployer. An IBM developerWorks article with more details is in the [...]]]></description>
			<content:encoded><![CDATA[<p><em>In <a href="http://blog.xebialabs.com/2011/05/08/deployit-integrated-with-websphere-cloudburst-appliance-for-applications-on-demand/">a previous blog</a> I talked about the integration we&#8217;ve achieved between <a href="http://www.xebialabs.com/">XebiaLabs&#8217; Deployit</a> and IBM&#8217;s <a href="http://www.ibm.com/software/webservers/workload-deployer/">Workload Deployer</a> (still called WebSphere CloudBurst Appliance at the time) to allow users to deploy Java EE packages straight to a private cloud environment managed by IBM Workload Deployer. An IBM developerWorks article with more details is in the publishing queue. When it&#8217;s been published, I&#8217;ll post a link here. In this blog, I&#8217;d like to discuss another integration we&#8217;ve been working on.</em></p>
<p>IBM&#8217;s <a href="http://www-01.ibm.com/software/integration/datapower/">WebSphere DataPower appliances</a> are a family of appliances that provide valuable services for SOA architectures such as XML acceleration (<a href="http://www-01.ibm.com/software/integration/datapower/xa35/">XA35</a>), XML security (<a href="http://www-01.ibm.com/software/integration/datapower/xs40/">XS40</a>) and data integration/ESB (<a href="http://www-01.ibm.com/software/integration/datapower/xi50/">XI50</a> ). While the DataPower appliances provide a powerful web-based management GUI, they are not easy to automate. The only command line available is an interactive command line that requires you to telnet into the appliance and the other way to automate the system is a <a href="http://www.redbooks.ibm.com/abstracts/redp4446.html">SOAP/XML based API</a> that requires quite a lot of coding.</p>
<p><a href="http://blog.xebialabs.com/2011/07/06/deployit-integrated-with-dpadmin-for-heterogeneous-deployments-to-ibm-datapower-appliances/" class="more-link">(more&#8230;)</a></p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2011/07/06/deployit-integrated-with-dpadmin-for-heterogeneous-deployments-to-ibm-datapower-appliances/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2011%2F07%2F06%2Fdeployit-integrated-with-dpadmin-for-heterogeneous-deployments-to-ibm-datapower-appliances%2F&amp;title=Deployit%20integrated%20with%20DPAdmin%20for%20heterogeneous%20deployments%20to%20IBM%20DataPower%20appliances" id="wpa2a_6"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2011/07/06/deployit-integrated-with-dpadmin-for-heterogeneous-deployments-to-ibm-datapower-appliances/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Deployit integrated with WebSphere CloudBurst Appliance for applications on demand</title>
		<link>http://blog.xebia.com/2011/05/08/deployit-integrated-with-websphere-cloudburst-appliance-for-applications-on-demand/</link>
		<comments>http://blog.xebia.com/2011/05/08/deployit-integrated-with-websphere-cloudburst-appliance-for-applications-on-demand/#comments</comments>
		<pubDate>Sun, 08 May 2011 14:01:43 +0000</pubDate>
		<dc:creator>Vincent Partington</dc:creator>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Middleware]]></category>
		<category><![CDATA[Virtualization]]></category>
		<category><![CDATA[Xebia Labs]]></category>

	<!-- AutoMeta Start -->
	<category>cloudburst</category>
	<category>appliance</category>
	<category>topologies</category>
	<category>virtual</category>
	<category>deployit</category>
	<category>websphere</category>
	<category>deploys</category>
	<category>deploy</category>
	<category>cloudburst</category>
	<category>appliance</category>
	<category>topologies</category>
	<category>virtual</category>
	<category>deployit</category>
	<category>websphere</category>
	<category>deploys</category>
	<category>deploy</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=6828</guid>
		<description><![CDATA[At XebiaLabs, we have recently been working on an exciting new integration for Deployit, our deployment automation product. We&#8217;ve created a Deployit plugin that allows you to deploy EAR files directly to virtual systems created by IBM&#8217;s WebSphere CloudBurst Appliance (WCA). But a small piece of background first. Deployit and WebSphere CloudBurst Appliance both &#8220;deploy&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>At XebiaLabs, we have recently been working on an exciting new integration for <a href="http://www.xebialabs.com/features">Deployit</a>, our deployment automation product. We&#8217;ve created a Deployit plugin that allows you to deploy EAR files directly to virtual systems created by IBM&#8217;s <a href="http://www-01.ibm.com/software/webservers/cloudburst/">WebSphere CloudBurst Appliance</a> (WCA).</p>
<p>
But a small piece of background first. Deployit and WebSphere CloudBurst Appliance both &#8220;deploy&#8221; things. But they deploy different things. Deployit deploys application artifacts and resources such as EAR files and data sources to middleware systems like WebSphere Application Server (but also HTML to web servers, MQ configuration to queue managers, etc.). The WebSphere CloudBurst Appliance on the other hand, deploys patterns (topologies) of virtual images to hypervisors. But not just any kind of virtual images. It is especially geared towards deploying middleware topologies. In other words, the software Deployit wants to deploy <em>to</em>! This means that the functionalities of WCA and Deployit are a perfect fit; have WCA deploy the middleware systems and have Deployit deploy applications to those middleware systems.<br />
<a href="http://blog.xebialabs.com/2011/05/08/deployit-integrated-with-websphere-cloudburst-appliance-for-applications-on-demand/#more-6828" class="more-link">(more&#8230;)</a></p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2011/05/08/deployit-integrated-with-websphere-cloudburst-appliance-for-applications-on-demand/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2011%2F05%2F08%2Fdeployit-integrated-with-websphere-cloudburst-appliance-for-applications-on-demand%2F&amp;title=Deployit%20integrated%20with%20WebSphere%20CloudBurst%20Appliance%20for%20applications%20on%20demand" id="wpa2a_8"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2011/05/08/deployit-integrated-with-websphere-cloudburst-appliance-for-applications-on-demand/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Deployment automation vs. server provisioning</title>
		<link>http://blog.xebia.com/2010/12/20/deployment-automation-vs-server-provisioning/</link>
		<comments>http://blog.xebia.com/2010/12/20/deployment-automation-vs-server-provisioning/#comments</comments>
		<pubDate>Mon, 20 Dec 2010 20:51:59 +0000</pubDate>
		<dc:creator>Vincent Partington</dc:creator>
				<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Middleware]]></category>
		<category><![CDATA[Xebia Labs]]></category>

	<!-- AutoMeta Start -->
	<category></category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=5608</guid>
		<description><![CDATA[In my two previous blogs I compared deployment automation to build automation and release management automation respectively. Build automation tools automate the building of software while deployment automation focuses on deploying the software after it has been built. In the other blog I explained that release management tools manage the release process of software but [...]]]></description>
			<content:encoded><![CDATA[<p><em>In my two previous blogs I compared deployment automation to <a href="http://blog.xebialabs.com/2010/10/12/deployment-automation-vs-build-automation/">build automation</a> and <a href="http://blog.xebialabs.com/2010/11/25/deployment-automation-vs-release-management-automation/">release management automation</a> respectively. Build automation tools automate the </em>building<em> of software while deployment automation focuses on </em>deploying<em> the software after it has been built. In the other blog I explained that release management tools </em>manage the release process<em> of software but </em>don&#8217;t do the actual work<em>. In this blog I will compare deployment automation to server provisioning automation and here the distinction is harder to make. So please bear with me!</em></p>
<p>
Let&#8217;s start by defining server provisioning. We can look at the ubiquitous <a href="http://en.wikipedia.org/wiki/Provisioning#Server_provisioning">Wikipedia definition</a> or at <a href="http://www.wordiq.com/definition/Provisioning">the one from wordIQ</a>. They tell a similar story; Server provisioning is about making a server ready for service. It usually involves activities such as:<br />
<a href="http://blog.xebialabs.com/2010/12/20/deployment-automation-vs-server-provisioning/" class="more-link">(more&#8230;)</a></p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2010/12/20/deployment-automation-vs-server-provisioning/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2010%2F12%2F20%2Fdeployment-automation-vs-server-provisioning%2F&amp;title=Deployment%20automation%20vs.%20server%20provisioning" id="wpa2a_10"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2010/12/20/deployment-automation-vs-server-provisioning/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Deployment automation vs. release management automation</title>
		<link>http://blog.xebia.com/2010/11/25/deployment-automation-vs-release-management-automation/</link>
		<comments>http://blog.xebia.com/2010/11/25/deployment-automation-vs-release-management-automation/#comments</comments>
		<pubDate>Thu, 25 Nov 2010 13:04:50 +0000</pubDate>
		<dc:creator>Vincent Partington</dc:creator>
		<br />
<b>Warning</b>:  Invalid argument supplied for foreach() in <b>/home/blog.xebia.com/www/wp-content/plugins/autometa/autometa.php</b> on line <b>303</b><br />
		<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[Xebia Labs]]></category>

	<!-- AutoMeta Start -->
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=5483</guid>
		<description><![CDATA[In a previous blog, I compared deployment automation to build automation. I wrote about the differences between the build and the deployment process and I explained why different features are required from the respective automation tools. In this blog I will explain the difference between release management and deployment and why release management tools that [...]]]></description>
			<content:encoded><![CDATA[<p><em>In a previous blog, I <a href="/2010/10/12/deployment-automation-vs-build-automation/" target="_new">compared deployment automation to build automation</a>. I wrote about the differences between the build and the deployment process and I explained why different features are required from the respective automation tools. In this blog I will explain the difference between release management and deployment and why release management tools that claim they do deployment automation are actually doing something different. And why that is a good thing. <img src='http://blog.xebia.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </em></p>
<p>
Let&#8217;s start by defining release management. While <a href="http://en.wikipedia.org/wiki/Release_management" target="_new">Wikipedia might define release management as a relatively new discipline</a> in the application lifecycle management space, it has actually been <a href="http://wiki.en.it-processmaps.com/index.php/Release_Management" target="_new">a part of ITIL v2</a> since its release in 2000. It  concerns itself with the management of software releases. Courtesy of the <a href="http://www.itlibrary.org/index.php?page=ITIL" target="_new">ITIL Open Guide</a>, the key activities of <a href="http://www.itlibrary.org/index.php?page=Release_Management" target="_new">release management</a> are:</p>
<p> <a href="http://blog.xebialabs.com/2010/11/25/deployment-automation-vs-release-management-automation/" class="more-link">(more&#8230;)</a></p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2010/11/25/deployment-automation-vs-release-management-automation/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2010%2F11%2F25%2Fdeployment-automation-vs-release-management-automation%2F&amp;title=Deployment%20automation%20vs.%20release%20management%20automation" id="wpa2a_12"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2010/11/25/deployment-automation-vs-release-management-automation/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Deployment automation vs. build automation</title>
		<link>http://blog.xebia.com/2010/10/12/deployment-automation-vs-build-automation/</link>
		<comments>http://blog.xebia.com/2010/10/12/deployment-automation-vs-build-automation/#comments</comments>
		<pubDate>Tue, 12 Oct 2010 15:38:19 +0000</pubDate>
		<dc:creator>Vincent Partington</dc:creator>
		<br />
<b>Warning</b>:  Invalid argument supplied for foreach() in <b>/home/blog.xebia.com/www/wp-content/plugins/autometa/autometa.php</b> on line <b>303</b><br />
		<category><![CDATA[Deployment]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Xebia Labs]]></category>

	<!-- AutoMeta Start -->
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=5305</guid>
		<description><![CDATA[Since make was introduced in 1977 to automatically build software, more areas of the software construction and release process have been automated. In fact, anybody building serious software without automating their builds, their tests and without using continuous integration is not considered to be a professional. A hot topic within the application lifecycle management (ALM) [...]]]></description>
			<content:encoded><![CDATA[<p><em><br />
Since <a href="http://www.gnu.org/software/make/">make</a> was introduced in 1977 to automatically build software, more areas of the software construction and release process have been automated. In fact, anybody building serious software without automating their builds, their tests and without using <a href="http://martinfowler.com/articles/continuousIntegration.html">continuous integration</a> is not considered to be a professional. A hot topic within the <a href="http://en.wikipedia.org/wiki/Application_lifecycle_management">application lifecycle management</a> (ALM) space is <b>deployment automation</b>. This is driven by middleware environments getting bigger and more complex, by the increasing number of application releases demanded by modern businesses, and by the fact that application deployment needs to happen reliably to not disrupt online services and businesses. Add to that the fact that cloud infrastructure is becoming more mainstream by the day, you can bet there is a lot happening in this space.</p>
<p>At <a href="http://www.xebialabs.com/">XebiaLabs</a> we have developed <a href="http://www.xebialabs.com/deployit-automated-deployment-java-applications">Deployit</a> and that has given us a lot of insight into the deployment automation domain. This is the first blog in a series that will explore that domain by comparing deployment automation with a number of related topics.<br />
</em><br />
 <a href="http://blog.xebialabs.com/2010/10/12/deployment-automation-vs-build-automation/" class="more-link">(more&#8230;)</a></p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2010/10/12/deployment-automation-vs-build-automation/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2010%2F10%2F12%2Fdeployment-automation-vs-build-automation%2F&amp;title=Deployment%20automation%20vs.%20build%20automation" id="wpa2a_14"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2010/10/12/deployment-automation-vs-build-automation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Implementing Deployit, part 1: organizational aspects</title>
		<link>http://blog.xebia.com/2010/02/25/implementing-deployit-part-1-organizational-aspects/</link>
		<comments>http://blog.xebia.com/2010/02/25/implementing-deployit-part-1-organizational-aspects/#comments</comments>
		<pubDate>Thu, 25 Feb 2010 07:36:37 +0000</pubDate>
		<dc:creator>Vincent Partington</dc:creator>
		<br />
<b>Warning</b>:  Invalid argument supplied for foreach() in <b>/home/blog.xebia.com/www/wp-content/plugins/autometa/autometa.php</b> on line <b>303</b><br />
		<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Middleware]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[Xebia Labs]]></category>

	<!-- AutoMeta Start -->
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=4036</guid>
		<description><![CDATA[Last month XebiaLabs released the Personal Edition of Deployit. Now that people have been able to experience in a simple environment how Deployit can work for them, you might wonder how to start using Deployit for real in your development and operations environments. In this blog and its sequel we will go over the things [...]]]></description>
			<content:encoded><![CDATA[<p>Last month <a href="http://www.xebialabs.com/">XebiaLabs</a> <a href="/2010/02/10/deployit-personal-edition-available-for-download/">released</a> the <a href="http://www.xebialabs.com/deployit-personal-edition-request">Personal Edition</a> of Deployit. Now that people have been able to experience in a simple environment how Deployit can work for them, you might wonder how to start using Deployit for real in your development and operations environments. In this blog and its sequel we will go over the things we&#8217;ve learned when starting to use Deployit. We will also be covering this subject (and a lot of other subjects!) in our upcoming <a href="http://www.xebialabs.com/free-deployit-personal-edition-training">Deployit webinar series</a>.</p>
<p>
There are organizational and technical consequences to introducing a deployment automation product. But let&#8217;s focus on the organizational aspects first. These pointers will help you get started with implementing Deployit in your organization in the right way.<br />
<span id="more-4036"></span></p>
<h3>Involve the right people</h3>
<p>Because application deployment is in essence a cross-departmental issue, you will need to find and involve everybody that it concerns. Depending on the organization of your IT department, that might be developers, application (deployment) administrators, system administrators, database administrators, infrastructure experts, etc. <a href="http://www.xebialabs.com/benefits">Each of these parties stands to gain</a> from the automation of their part of the deployment process so it is good to get their involvement early in the project.</p>
<h3>Standardize your deployment process</h3>
<p><img src="http://blog.xebia.com/wp-content/uploads/2010/02/sim2trans.gif" alt="sim2trans" title="sim2trans" width="90" height="72" class="alignright size-full wp-image-4043" align="right" />A very obvious thing to do before automating your deployment process is to standardize it. If each application uses a separate deployment process, it will be a lot of work to automate all of those. But more importantly, this is a good moment to no longer have a &#8220;mixed bag&#8221; of processes. With some analysis it should be possible to find one or maybe two different deployment processes that will work for all your Java EE application deployments. When standardizing your deployment process, have a look at the ones that come standard with Deployit. They are based on the recommendations of the middleware vendors (such as IBM&#8217;s redbooks) combined with XebiaLabs&#8217; experience setting up deployment automation at a lot of sites.</p>
<h3><a name="ownership"></a>Rethink ownership of (parts of) the process and the environment</h3>
<p>While you are standardizing your deployment process, take a good look at why certain parts of the process and certain environments are the responsible of certain groups and possibly change that. For example, until now, test environments have mostly been owned by the system administration group which made it hard for the development teams to verify their work on this environment. To prevent the development teams from making incompatible changes on the test environment, most sysadmin groups have come up with a pretty tightly controlled process to allow developers access to this environment. This has usually led to a high overhead process with a lot of handover moments and waiting time. Because of Deployit&#8217;s security features, the system administrators can give development teams permission to deploy new versions of their application without having the ability to touch other applications or the other parts of the configuration.</p>
<h3>Question any derivations from the standard</h3>
<p><img src="http://blog.xebia.com/wp-content/uploads/2010/02/question-mark1-237x300.png" alt="question-mark1" title="question-mark1" width="79" height="100" class="alignright size-medium wp-image-4040" align="right" /><br />
During the standardization of the deployment process, you might encounter certain areas where some special action is considered absolutely necessary. While that may be valid in some cases, we have seen quite a few cases where that is not the case (anymore). For example, some sites still prefer to keep static content separate from the WAR files and host it on the webserver. The reasoning behind this is that the Java EE application server would not have enough processing power to serve that static content. This has not been true for quite a while thanks to advances such as <a href="http://java.sun.com/j2se/1.4.2/docs/guide/nio/">Java NIO</a> and <a href="http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/topic/com.ibm.websphere.nd.multiplatform.doc/info/ae/ae/tdyn_esiedgecaching.html?resultof=%22%65%64%67%65%22%20%22%65%64%67%22%20">Edge Side Include caching</a>. Always ask <a href="http://en.wikipedia.org/wiki/5_Whys">the 5 why&#8217;s</a>.</p>
<h3>Automate the quick wins first: deployment process steps</h3>
<p><img src="http://blog.xebia.com/wp-content/uploads/2010/02/gears-and-wood-150x150.jpg" alt="gears-and-wood" title="gears-and-wood" width="75" height="75" class="alignleft size-thumbnail wp-image-4045" style="padding-right: 10px;" align="left" />Deployit can automate every part of your application deployment process. But when you start out with Deployit it is a good idea to take it step by step. Identify the parts of the deployment process where Deployit will give you the most benefit, the most easily. For example, you might want to incorporate updating SQL schema&#8217;s into the deployment process but unless you perform a lot of SQL schema updates there is less benefit to be gained here. So you might leave that part of your deployment process a manual step for now. Then again, if you have a lot of problems with SQL schema updates starting here would be the ideal thing to do. Also, the plugin API of Deployit makes it possible to extend Deployit to support custom middleware systems (there are still a lot of ESB-like systems built on top of standard message queueing software out there!) but you will already gain an advantage when starting with the automation of your standard Java EE application deployments.</p>
<h3>Automate the quick wins first: applications</h3>
<p>Ultimately you will want to automate the deployment of <em>all</em> your applications, but you&#8217;ve gotta start with one of those applications. There are two tactics here: choose a simple application or choose the one that is deployed most often. Usually these are different applications. Our suggestion would be to start with that most simple application and deploy it to a number of different environment so you will be able to find out what configuration changes might be necessary there (SSH access, firewalls, etc.). Changing those things might take a while, giving you time to deploy the more complex applications.</p>
<p>As I had promised, this blog has mainly focused on the organizational aspect of implementing Deployit. Part 2 will focus on the technical side of implementing Deployit. We will cover such subjects as &#8220;picking the right unit of deployment&#8221;, &#8220;choosing a machine to install Deployit on&#8221;, and &#8220;how to import your current environment into Deployit&#8221;. In the meantime, don&#8217;t forget to join us for on the episodes of the <a href="http://www.xebialabs.com/free-deployit-personal-edition-training">Deployit webinar series</a> (and don&#8217;t worry; you don&#8217;t have to be there for <em>all</em> of the webinars <img src='http://blog.xebia.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> ).</p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2010/02/25/implementing-deployit-part-1-organizational-aspects/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2010%2F02%2F25%2Fimplementing-deployit-part-1-organizational-aspects%2F&amp;title=Implementing%20Deployit%2C%20part%201%3A%20organizational%20aspects" id="wpa2a_16"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2010/02/25/implementing-deployit-part-1-organizational-aspects/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Deployit!</title>
		<link>http://blog.xebia.com/2010/02/10/deployit-personal-edition-available-for-download/</link>
		<comments>http://blog.xebia.com/2010/02/10/deployit-personal-edition-available-for-download/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 09:04:48 +0000</pubDate>
		<dc:creator>Vincent Partington</dc:creator>
		<br />
<b>Warning</b>:  Invalid argument supplied for foreach() in <b>/home/blog.xebia.com/www/wp-content/plugins/autometa/autometa.php</b> on line <b>303</b><br />
		<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Middleware]]></category>
		<category><![CDATA[Xebia Labs]]></category>
		<category><![CDATA[websphere]]></category>

	<!-- AutoMeta Start -->
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=4015</guid>
		<description><![CDATA[We&#8217;ve already been talking about Deployit, XebiaLabs&#8217; deployment automation product, for some time. Now we are proud to announce that you can try Deployit for yourself by downloading the Personal Edition of Deployit! If you don&#8217;t know what Deployit is yet, have a look at the movie below! To summarize; Deployit will automate your Java [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve already been <a href="/category/xebialabs">talking about Deployit</a>, XebiaLabs&#8217; deployment automation product, for some time. Now we are proud to announce that you can try Deployit for yourself by downloading <a href="http://www.xebialabs.com/deployit-personal-edition-request" alt="Deployit Personal Edition download" title="Deployit Personal Edition download">the Personal Edition of Deployit</a>!</p>
<p>
If you don&#8217;t know what Deployit is yet, have a look at the movie below!</p>
<div align="center">
	<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/Fc88Jw4A8kc&#038;rel=0&#038;color1=0x234900&#038;color2=0x4e9e00&#038;hl=en_US&#038;feature=player_embedded&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.youtube.com/v/Fc88Jw4A8kc&#038;rel=0&#038;color1=0x234900&#038;color2=0x4e9e00&#038;hl=en_US&#038;feature=player_embedded&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="425" height="344"></embed></object>
</div>
<p>To summarize; Deployit will automate your Java EE application deployments and, because of the overview it offers and the history it keeps, it also allows you to manage and optimize your deployments.<br />
<span id="more-4015"></span></p>
<h3>What&#8217;s in Deployit v1.2?</h3>
<p>We have just released version 1.2 of Deployit. This version has support for the major three application servers; IBM WebSphere AS, Oracle WebLogic Server and JBoss AS. And Deployit now has an open plugin API that allows you to extend the existing plugins or write your own. In this way you can support your custom middleware systems, custom procedures, or even add support for middleware we do not support (yet). The full list of features is as follows:</p>
<ul>
<li>Support for IBM WebSphere Application Server 6 and 7;</li>
<li>Support for Oracle WebLogic Server 10 and 11g;</li>
<li>Support for JBoss Application Server 4 and 5;</li>
<li>Support for Apache HTTPD including the management of virtual hosts and generation of WebSphere and WebLogic plugin configurations;</li>
<li>Support for the creation and configuration of clusters and servers on heterogenous middleware environments;</li>
<li>Support for a broad range of artifacts, JDBC data sources, JMS resources, shared libraries (JARs), application configurations, firewalls and static content;</li>
<li>Extensible plugin API framework to include custom middleware stacks and applications;</li>
<li>Middleware integration test framework and a TCK.</li>
</ul>
<h3>Get started with the Personal Edition!</h3>
<p>Together with the release of version 1.2 we have made a Personal Edition available for download. The Personal Edition has the same features as the full Enterprise Edition except for the security features. Also, the license is only valid for a single user. For a full comparison of the editions see <a href="http://www.xebialabs.com/deployit-personal-edition-request" alt="Deployit Personal Edition download" title="Deployit Personal Edition download">the download page</a>.</p>
<p>
When you have downloaded the Personal Edition of Deployit, you can see how it works in your own environment! There&#8217;s a Getting Started manual to get you up and running and doing deployments within minutes. When you are stuck you can use our email support address or use our telephone support. And you can use <a href="http://tech.xebialabs.com/forum/">the Deployit forums</a> and browse (and add to) <a href="http://tech.xebialabs.com/jira/">the Deployit JIRA</a>. When you&#8217;ve done all that, have a look at the plugin API to see how easy it is to customize and extend Deployit. A couple of people from the Deployit community (Hi <a href="http://blog.xebia.fr/author/bmoussaud/">Benoit</a> and <a href="http://blog.xebia.fr/author/eservent/">Emmanuel!</a> <img src='http://blog.xebia.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ) have already written new plugins with the Deployit framework.</p>
<p>
We are very happy with the release of Deployit v1.2 and the Personal Edition and we look forward to your questions, new ideas, feature requests and even your bug reports. So, if you haven&#8217;t done so already, <a href="http://www.xebialabs.com/deployit-personal-edition-request" alt="Deployit Personal Edition download" title="Deployit Personal Edition download">start downloading now</a>!</p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2010/02/10/deployit-personal-edition-available-for-download/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2010%2F02%2F10%2Fdeployit-personal-edition-available-for-download%2F&amp;title=Deployit%21" id="wpa2a_18"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2010/02/10/deployit-personal-edition-available-for-download/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Middleware integration testing with JUnit, Maven and VMware, part 3 (of 3)</title>
		<link>http://blog.xebia.com/2010/01/07/middleware-integration-testing-with-junit-maven-and-vmware-part-3/</link>
		<comments>http://blog.xebia.com/2010/01/07/middleware-integration-testing-with-junit-maven-and-vmware-part-3/#comments</comments>
		<pubDate>Wed, 06 Jan 2010 23:00:16 +0000</pubDate>
		<dc:creator>Vincent Partington</dc:creator>
				<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Middleware]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Virtualization]]></category>
		<category><![CDATA[Xebia Labs]]></category>
		<category><![CDATA[JBoss]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[TDD]]></category>

	<!-- AutoMeta Start -->
	<category></category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=3939</guid>
		<description><![CDATA[Last year, before the Christmas holidays , I described how we do middleware integration testing at XebiaLabs and I described the way we deploy test servlets by wrapping them in WAR and EAR files that get generated on the fly. There is only one thing left to explain; how do we integrate these tests into [...]]]></description>
			<content:encoded><![CDATA[<p>Last year, before the Christmas holidays <img src='http://blog.xebia.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> , I described <a href="/2009/12/07/middleware-integration-testing-with-junit-maven-and-vmware-part-1/">how we do middleware integration testing</a> at <a href="http://www.xebialabs.com/">XebiaLabs</a> and I described <a href="/2009/12/14/middleware-integration-testing-with-junit-maven-and-vmware-part-2/">the way we deploy test servlets by wrapping them in WAR and EAR files that get generated on the fly</a>. There is only one thing left to explain; how do we integrate these tests into a continuous build using Maven and VMware?</p>
<h3>Running the middleware integration tests</h3>
<p>So let&#8217;s start with the Maven configuration. As I mentioned in the first blog of this series, the integration tests are recognizable by the fact that the classnames end in <tt>Itest</tt>. That means they won&#8217;t get picked up by the <a href="http://maven.apache.org/plugins/maven-surefire-plugin/test-mojo.html#includes">default configuration of the Maven Surefire plugin</a>. And that is fortunate because we don&#8217;t always want to run these tests. Firstly they require a very specific test setup (the application server configurations should be in an expected state, see below) and secondly they can take a long time to complete and that would get in the way of the quick turnaround we want from commit builds in our continuous integration system.<br />
<span id="more-3939"></span></p>
<p>
But when we <em>do</em> want to run the middleware integration tests, we can configure the Maven Surefire plugin with a <a href="http://maven.apache.org/guides/introduction/introduction-to-profiles.html">Maven build profile</a> like so:</p>
<pre>
&lt;profiles>
    &lt;profile>
        <strong>&lt;id>itest&lt;/id></strong>
        &lt;build>
            &lt;plugins>
                &lt;plugin>
                    &lt;artifactId>maven-surefire-plugin&lt;/artifactId>
                    &lt;configuration>
                        &lt;includes>
                            &lt;include>**/Test*.java&lt;/include>
                            &lt;include>**/*Test.java&lt;/include>
                            &lt;include>**/*TestCase.java&lt;/include>
                            <strong>&lt;include>**/*Itest.java&lt;/include></strong>
                        &lt;/includes>
                    &lt;/configuration>
                &lt;/plugin>
            &lt;/plugins>
        &lt;/build>
    &lt;/profile>
&lt;/profiles>
</pre>
<p>To run the middleware integration tests in addition to the regular tests, we can tell Maven to use this profile with the <tt>-P</tt> flag:</p>
<pre>
$ mvn -Pitest test
</pre>
<p>If we want this profile to run <em>only</em> the middleware integration tests, we need to leave out the lines that include the standard classnames (<tt>Test*.java</tt>, <tt>*Test.java</tt> and <tt>*TestCase.java</tt>).</p>
<h3>Defining the expected state for the target middleware</h3>
<p>A big challenge when performing middleware integration tests is to ensure that the middleware we test against is in a correct state. For example, the test might expect an application server cluster to be running but <em>no</em> application to be deployed on it. In a regular test we may set up a test fixture in a method marked with <a href="http://junit.org/apidocs/org/junit/Before.html"><tt>@Before</tt></a>, but in this case that might not be so simple. Confuguring the middleware to be in the expected state would be an integration in itself!</p>
<p>
The first approach to address this issue is to write all middleware integration tests in such a way that they revert any changes they make. For example, a test that creates a datasource also removes it. In this way we combine the test for the creation-step with the test for the destruction-step. The disadvantage here is that these two steps can no longer be tested independently, but the advantage is that the combined test runs more quickly. For this approach to be successful, all tests using the same target middleware should agree on a common expected state. We configure the target middleware in that state once and all the tests return the middleware to that state after completion.  With a setup like this we can quickly run one or more integration tests, either interactively from an IDE such as Eclipse, or from Maven.</p>
<p>
But there is one problem with this. What if the test fails? In that case the middleware might not be left in the correct state. One could argue that the steps needed to revert the middleware should be placed in an <a href="http://junit.org/apidocs/org/junit/After.html"><tt>@After</tt></a> method but they may still fail. More importantly, those steps are also part of the test so they don&#8217;t really belong there!</p>
<h3>Reverting the target middleware to the expected state with VMware</h3>
<p>This is where VMware comes in. By installing the target middleware in a <a href="http://en.wikipedia.org/wiki/Hypervisor">hypervisor</a> such as VMware, we can make a <a href="http://en.wikipedia.org/wiki/Snapshot_(computer_storage)#In_virtualization">snapshot</a> when the middleware is in the expected state. Then we can revert to that state <em>before</em> executing a single test or a test suite. The simplest thing is to manually revert from the hypervisor administration console before running the tests. But we can also revert the images automatically, so that we can integrate these tests into our <a href="http://martinfowler.com/articles/continuousIntegration.html">continuous integration</a> builds.</p>
<p>
The images we use for our middleware integration tests run on <a href="http://www.vmware.com/products/vsphere/">VMware vSphere 4</a> and we&#8217;ve found the <a href="http://www.vmware.com/support/developer/viperltoolkit/">vSphere SDK for Perl</a>, and most specifically the provided <tt>vmrun.pl</tt> sample script, to be the easiest way to interface with VMware vSphere. As an example, this is the script we use to revert our JBoss image:</p>
<pre>
IMAGE_NAME="[datastore1] jboss-42/CentOS 5.3, JBoss 4.2.3-GA.vmx"
SNAPSHOT_NAME="Ready for itest"
SETTLE_TIME=60
VMRUN=/usr/lib/vmware-vix/lib/api/vix-perl/samples/vmrun.pl

echo "Reverting VMWare image $IMAGE_NAME to snapshot $SNAPSHOT_NAME"
$VMRUN -host $VMWARE_HOST -username $VMWARE_USERNAME -password $VMWARE_PASSWORD \
    revertToSnapshot "$IMAGE_NAME" "$SNAPSHOT_NAME"

echo "Waiting $SETTLE_TIME seconds for things to settle"
sleep $SETTLE_TIME
</pre>
<p>We do need to provide the proper values for the environment variables <tt>VMWARE_HOST</tt>, <tt>VMWARE_USERNAME</tt> and <tt>VMWARE_PASSWORD</tt> when running this script. After the image has been reverted we wait for 60 seconds to allow the image to settle. The amount of seconds needed here is hard to determine exactly but this value works well for us.</p>
<p>
To have Maven run this script before the integration tests are executed, but only when a certain profile is selected, we have added this configuration to the POM:</p>
<pre>
&lt;profiles>
    &lt;profile>
        <strong>&lt;id>revert-vmware-images&lt;/id></strong>
        &lt;build>
            &lt;plugins>
                &lt;plugin>
                    &lt;groupId>org.codehaus.mojo&lt;/groupId>
                    <strong>&lt;artifactId>exec-maven-plugin&lt;/artifactId></strong>
                    &lt;version>1.1&lt;/version>
                    &lt;executions>
                        &lt;execution>
                            <strong>&lt;!-- We really want this to execute right before the test phase. -->
                            &lt;!-- This is the best we can do. -->
                            &lt;phase>process-test-resources&lt;/phase>
                            &lt;goals>
                                &lt;goal>exec&lt;/goal>
                            &lt;/goals></strong>
                        &lt;/execution>
                    &lt;/executions>
                    &lt;configuration>
                        <strong>&lt;executable>/bin/sh&lt;/executable>
                        &lt;commandlineArgs>src/test/scripts/revert-vmware-images.sh&lt;/commandlineArgs></strong>
                    &lt;/configuration>
                &lt;/plugin>
            &lt;/plugins>
        &lt;/build>
    &lt;/profile>
&lt;/profiles>
</pre>
<h3>Putting it together</h3>
<p>With the two profiles introduced in this blog, we tell Maven to revert the VMware images <em>and</em> execute all middleware integration tests by giving the following command:</p>
<pre>
$ mvn -Prevert-vmware-images -Pitest clean test
</pre>
<p>We have configured our continuous integration system to run this command once a day, as a <a href="-Prevert-vmware-images -Pitest clean install"><em>secondary build</em></a>, and configured it with the right values for the <tt>VMWARE_HOST</tt>, <tt>VMWARE_USERNAME</tt> and <tt>VMWARE_PASSWORD</tt> environment variables. In this way the middleware integration tests do not slow down the standard commit build (they take about 90 minutes to complete in our case!). As an added benefit, we know <em>when</em> the VMware images will be used by the tests so we can use them for manual experiments at other times.</p>
<h3>Conclusion</h3>
<p>In this blog and the <a href="/2009/12/07/middleware-integration-testing-with-junit-maven-and-vmware-part-1/">first</a> <a href="/2009/12/14/middleware-integration-testing-with-junit-maven-and-vmware-part-2/">two</a> blogs of this series I have explained how <a href="http://www.xebialabs.com/">we</a> use <a href="http://www.junit.org/">JUnit</a>, <a href="http://maven.apache.org/">Maven</a> and <a href="http://www.vmware.com/">VMware</a> to write repeatable, manageable middleware integration tests. These tests have helped us gain a lot of confidence in the stability of <a href="http://www.xebialabs.com/deployit-automated-deployment-java-applications">Deployit</a>&#8216;s middleware integrations. And because this test-support code is part of Deployit&#8217;s plugin API, Deployit plugin developers can use it to get the same confidence in their own code!</p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2010/01/07/middleware-integration-testing-with-junit-maven-and-vmware-part-3/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2010%2F01%2F07%2Fmiddleware-integration-testing-with-junit-maven-and-vmware-part-3%2F&amp;title=Middleware%20integration%20testing%20with%20JUnit%2C%20Maven%20and%20VMware%2C%20part%203%20%28of%203%29" id="wpa2a_20"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2010/01/07/middleware-integration-testing-with-junit-maven-and-vmware-part-3/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
<!-- This Quick Cache file was built for (  blog.xebia.com/author/vpartington/feed/ ) in 1.96080 seconds, on Feb 9th, 2012 at 4:26 pm UTC. -->
<!-- This Quick Cache file will automatically expire ( and be re-built automatically ) on Feb 9th, 2012 at 5:26 pm UTC -->
<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!-- Quick Cache Is Fully Functional :-) ... A Quick Cache file was just served for (  blog.xebia.com/author/vpartington/feed/ ) in 0.00119 seconds, on Feb 9th, 2012 at 5:19 pm UTC. -->
