<?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>ITworks &#187; continous-integration</title>
	<atom:link href="http://itworks.hu/tag/continous-integration/feed/" rel="self" type="application/rss+xml" />
	<link>http://itworks.hu</link>
	<description>Random musings in IT</description>
	<lastBuildDate>Mon, 09 Jan 2012 08:01:21 +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>Setting up a project</title>
		<link>http://itworks.hu/2007/09/20/setting-up-a-project/</link>
		<comments>http://itworks.hu/2007/09/20/setting-up-a-project/#comments</comments>
		<pubDate>Thu, 20 Sep 2007 18:41:40 +0000</pubDate>
		<dc:creator>csak</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[axis]]></category>
		<category><![CDATA[continous-integration]]></category>
		<category><![CDATA[hibernate]]></category>
		<category><![CDATA[project]]></category>
		<category><![CDATA[swing]]></category>
		<category><![CDATA[web-service]]></category>

		<guid isPermaLink="false">http://itworks.hu/?p=19</guid>
		<description><![CDATA[I&#8217;ve been working for a major company as a lead developer for some time, and can&#8217;t fail to notice the trends of ignoring even the simplest and most basic &#8220;precautions&#8221; on any given project, whenever possible. Projects are always pushed &#8230; <a href="http://itworks.hu/2007/09/20/setting-up-a-project/">Read more <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been working for a major company as a lead developer for some time, and can&#8217;t fail to notice the trends of ignoring even the simplest and most basic &#8220;precautions&#8221; on any given project, whenever possible. Projects are always pushed for time either because it is really urgent, or more frequently, because it would cost more to have it hanging out for a bit longer. All the while I see software development trends focusing on quality, with continuous integration, iterative development, automated testing and so on, while all these great utilities are the first to be sacrificed when a project is &#8220;cost optimized&#8221;. The projects pass with flying colors and new people are hired for maintenance. These people are nowhere near the quality of a qualified developer, and screw things up until more experts are called in again to clean things up.</p>
<p><span id="more-19"></span>I know this is Hungary, but I very much fear this is also the case for most countries and most companies.</p>
<p>Take one of my last tasks as an example, I cannot be allocated for another project, but I was &#8220;borrowed&#8221; for a couple of days to set up a project environment for a very urgent and important job. The project was then handed over to two less then qualified developers. It was fun to set the project up, as the technologies I&#8217;ve chosen integrated nicely and resulted in an easy to maintain, compact environment. However I was forced to skip adding unit testing, as there was no way the project would fit writing a single test case.</p>
<p>Anyway I was going to write about the project itself and not mourn about the problems I can&#8217;t help.</p>
<p>The project is planned on simple grounds, there is a need for a GUI client, as a quite sophisticated editor is required. There is a need for small simple clients, so the the users would be able to use it with a relatively small configuration. The software delivery should be simple, so it would not burden the helpdesk. There is a need for security, as the application has some financial perspective to it. The project must be simple, so the not to advanced developers would be able to finish it. Ah yes, and I have two days to bang it together.</p>
<p>Well&#8230; Let&#8217;s start&#8230; The main constraint is the developers, they know some Hibernate, they know some Java, but know nothing about WSDL. Then the technology, to be easily deliverable it&#8217;s best to use Webstart, this will zero the deploy costs choosing Swing as the windowing environment enables the developers to use visual editors to bang some forms together, while reduces the deployment size greatly, if we consider the SWT alternative. The application will communicate with the server through web service through SSL to ensure security.</p>
<p>I have thus set up a project which contains both the client and the server code and the common codebase as well (the interfaces and POJOs used in web services), there is an ANT script to generate the WSDL, the code for Axis based web service classes, and the Hibernate POJO, and DAO-s. The generated code is stored in it&#8217;s respective folders, separated from the handwritten code. The ANT script is then compiles the files and it is also able to create the WAR and deploy on either Tomcat or WebSphere Application Server.  The project is set up in an Anthill to ensure that at least the developers are notified if their committed code breaks the application.</p>
<p>Even though I&#8217;ve created this environment as simple as humanly possible, when I handled it over to the developers-to-be they were less than understandig.</p>
<p>I can only hope they don&#8217;t mess it up too bad.</p>
]]></content:encoded>
			<wfw:commentRss>http://itworks.hu/2007/09/20/setting-up-a-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Continous integration issues with Ant(hill)</title>
		<link>http://itworks.hu/2007/05/02/continous-integration-issues-with-anthill/</link>
		<comments>http://itworks.hu/2007/05/02/continous-integration-issues-with-anthill/#comments</comments>
		<pubDate>Wed, 02 May 2007 21:11:29 +0000</pubDate>
		<dc:creator>csak</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[ant]]></category>
		<category><![CDATA[continous-integration]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://itworks.hu/?p=6</guid>
		<description><![CDATA[Anthill is a small, easy to configure automatic build and publish environment. I don&#8217;t want to discuss the deployment and configuration of the tool itself, I&#8217;d rather highlight the main issues that we had on using Anthill to automatically build &#8230; <a href="http://itworks.hu/2007/05/02/continous-integration-issues-with-anthill/">Read more <span class="meta-nav">&#187;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.anthillpro.com/html/products/anthillos/default.html">Anthill</a> is a small, easy to configure automatic build and publish environment.<br />
I don&#8217;t want to discuss the deployment and configuration of the tool itself, I&#8217;d rather highlight the main issues that we had on using Anthill to automatically build and deploy our ongoing projects.<br />
<span id="more-6"></span></p>
<p><strong>Hard to identify InvocationTarget exceptions</strong><br />
Our build environment was a Tomcat 6.0.x running on Sun JDK 1.6 on Debian Linux on x86, while the test and production environments are Websphere Application Servers 6.0.12 running the default IBM JDK 1.4.2 on AIX on Power5. Upon deploying to the test server we used the images created on the build environment using the Anthill&#8217;s <em>build as version</em> functions. Since the target source and target levels are Java 1.4, these options were specified in the javac ant task, so the code produced can run on the target environments.<br />
This setup worked perfectly for months on our projects, but after a while strange exceptions started popping up on the test server. Compiling and deploying the application using the same options as the ones set in Anthill on our local Websphere servers got rid of the problems, while the one deployed on the AIX running the WAS we got the exceptions. Since there didn&#8217;t seem to be any difference between the builds we didn&#8217;t suspect Anthill for quite a time, and thought it was some strange JDK problem on AIX.<br />
The simple code:<br />
<code>new BigDecimal(1);</code><br />
worked perfectly on our Tomcat, on our local WAS but threw an exception on the test server&#8217;s WAS. Changing the code to<br />
<code>new BigDecimal("1");</code><br />
worked perfectly on all environments.<br />
A collegue worked out the reason after a few days of searching. He noticed, that these issues occur, when we use methods, that have been extended in Java 1.5. For example the code above would map to BigDecimal(int i) while it will map to BigDecimal(double d). We realized, that however the generated code will be created to be ran under Java 1.4, it will be compiled for the actual runtime of the ant ran from the Anthill. Since the JRE in WAS doesn&#8217;t contain the signatures for the given method, this will throw the InvocationTargetException, which looks strange at that point of the code.<br />
After identifying the problem, solving it was quite easy after checking out the official <a href="http://ant.apache.org/manual/CoreTasks/javac.html">documentation</a>, changing the javac block to look something like:<br />
<code><javac srcdir="${src}"><br />
destdir="${build}"<br />
fork="yes"<br />
executable="${java.home}/../bin/javac"<br />
/&gt;</javac></code><br />
and passing the option <code>-Djava.home=/my/jdk/home/dir</code> will enable to build the project both under Anthill and Eclipse.</p>
<p><strong>Publishing under WAS</strong><br />
Our current project is to be deployed on WebSphere, and we wanted to use Anthill to deploy automatically on WAS. This is a real pain in the backside, since if you take FOSS servlet containers and application servers (Tomcat, Jetty, Jboss, Geronimo), they are pretty friendly when it comes to deploying an application on. You just copy the WAR/EAR in a directory and it is deployed automatically. On WAS hovewer this is not half as simple.<br />
WAS has a very specific way of accessing the administration interface ws_ant. It first seems like a very simple shell script running ant scripts, but try as you might you&#8217;ll never be able to invoke it from inside your normal ant. Rumor has it, that IBM modified the ant for some weird reason. After several failed attempts, we used the most trivial and ugly way to invoke the tasks.<br />
Based on the forums and even IBM&#8217;s InfoCenter it seems that invoking the ws_ant with the exec task with the required arguments. I have to mention two points here, one is that there seems to be no way to handle the return value of the exec. The other is that it&#8217;s quite annoying, that all arguments of the exec must be specified using separate args.</p>
]]></content:encoded>
			<wfw:commentRss>http://itworks.hu/2007/05/02/continous-integration-issues-with-anthill/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

