<?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>Build and Release Management &#187; Build Framework</title>
	<atom:link href="http://allscm.com/archives/category/build-framework/feed" rel="self" type="application/rss+xml" />
	<link>http://allscm.com</link>
	<description>Build. Release. Profit</description>
	<lastBuildDate>Tue, 15 May 2012 22:15:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Could not find com.google.gwt.dev.Compiler. Make sure you have it in your classpath</title>
		<link>http://allscm.com/archives/could-not-find-com-google-gwt-dev-compiler-make-sure-you-have-it-in-your-classpath.html</link>
		<comments>http://allscm.com/archives/could-not-find-com-google-gwt-dev-compiler-make-sure-you-have-it-in-your-classpath.html#comments</comments>
		<pubDate>Wed, 13 Jul 2011 21:01:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Gradle]]></category>

		<guid isPermaLink="false">http://allscm.com/?p=340</guid>
		<description><![CDATA[If you ever run into an exception similar to the following: Execution failed for task &#8216;:common:gwt-utils:gwtCompile&#8217;. at org.gradle.api.internal.tasks.DefaultTaskExecuter.executeActions (DefaultTaskExecuter.java:66) at org.gradle.api.internal.tasks.DefaultTaskExecuter.execute(DefaultTaskExecuter.java:43) at org.gradle.api.internal.project.taskfactory.PostExecutionAnalysisTaskExecuter.execute (PostExecutionAnalysisTaskExecuter.java:32) at org.gradle.api.internal.project.taskfactory.ExecutionShortCircuitTaskExecuter.execute (ExecutionShortCircuitTaskExecuter.java:50) at org.gradle.api.internal.tasks.SkipTaskExecuter.doExecute(SkipTaskExecuter.java:57) at org.gradle.api.internal.tasks.SkipTaskExecuter.execute(SkipTaskExecuter.java:35) at org.gradle.api.internal.tasks.ExecuteAtMostOnceTaskExecuter.execute (ExecuteAtMostOnceTaskExecuter.java:32) at org.gradle.api.internal.AbstractTask.execute(AbstractTask.java:231) at org.gradle.execution.DefaultTaskGraphExecuter.executeTask (DefaultTaskGraphExecuter.java:167) at org.gradle.execution.DefaultTaskGraphExecuter.doExecute (DefaultTaskGraphExecuter.java:160) at org.gradle.execution.DefaultTaskGraphExecuter.execute (DefaultTaskGraphExecuter.java:78) at org.gradle.execution.TaskNameResolvingBuildExecuter.execute (TaskNameResolvingBuildExecuter.java:113) at org.gradle.execution.DelegatingBuildExecuter.execute (DelegatingBuildExecuter.java:54) at org.gradle.execution.DelegatingBuildExecuter.execute (DelegatingBuildExecuter.java:54) at [...]]]></description>
			<content:encoded><![CDATA[<p>If you ever run into an exception similar to the following:</p>
<blockquote><p>Execution failed for task &#8216;:common:gwt-utils:gwtCompile&#8217;.<br />
at org.gradle.api.internal.tasks.DefaultTaskExecuter.executeActions</p>
<p>(DefaultTaskExecuter.java:66)<br />
at org.gradle.api.internal.tasks.DefaultTaskExecuter.execute(DefaultTaskExecuter.java:43)<br />
at org.gradle.api.internal.project.taskfactory.PostExecutionAnalysisTaskExecuter.execute</p>
<p>(PostExecutionAnalysisTaskExecuter.java:32)<br />
at org.gradle.api.internal.project.taskfactory.ExecutionShortCircuitTaskExecuter.execute</p>
<p>(ExecutionShortCircuitTaskExecuter.java:50)<br />
at org.gradle.api.internal.tasks.SkipTaskExecuter.doExecute(SkipTaskExecuter.java:57)<br />
at org.gradle.api.internal.tasks.SkipTaskExecuter.execute(SkipTaskExecuter.java:35)<br />
at org.gradle.api.internal.tasks.ExecuteAtMostOnceTaskExecuter.execute</p>
<p>(ExecuteAtMostOnceTaskExecuter.java:32)<br />
at org.gradle.api.internal.AbstractTask.execute(AbstractTask.java:231)<br />
at org.gradle.execution.DefaultTaskGraphExecuter.executeTask</p>
<p>(DefaultTaskGraphExecuter.java:167)<br />
at org.gradle.execution.DefaultTaskGraphExecuter.doExecute</p>
<p>(DefaultTaskGraphExecuter.java:160)<br />
at org.gradle.execution.DefaultTaskGraphExecuter.execute</p>
<p>(DefaultTaskGraphExecuter.java:78)<br />
at org.gradle.execution.TaskNameResolvingBuildExecuter.execute</p>
<p>(TaskNameResolvingBuildExecuter.java:113)<br />
at org.gradle.execution.DelegatingBuildExecuter.execute</p>
<p>(DelegatingBuildExecuter.java:54)<br />
at org.gradle.execution.DelegatingBuildExecuter.execute</p>
<p>(DelegatingBuildExecuter.java:54)<br />
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages</p>
<p>(DefaultGradleLauncher.java:153)<br />
at org.gradle.initialization.DefaultGradleLauncher.doBuild</p>
<p>(DefaultGradleLauncher.java:107)<br />
at org.gradle.initialization.DefaultGradleLauncher.run</p>
<p>(DefaultGradleLauncher.java:75)<br />
at org.gradle.launcher.RunBuildAction.execute(RunBuildAction.java:41)<br />
at org.gradle.launcher.RunBuildAction.execute(RunBuildAction.java:27)<br />
at org.gradle.launcher.CommandLineActionFactory$WithLoggingAction.execute</p>
<p>(CommandLineActionFactory.java:209)<br />
at org.gradle.launcher.CommandLineActionFactory$WithLoggingAction.execute</p>
<p>(CommandLineActionFactory.java:193)<br />
at org.gradle.launcher.Main.execute(Main.java:55)<br />
at org.gradle.launcher.Main.main(Main.java:40)<br />
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br />
at sun.reflect.NativeMethodAccessorImpl.invoke</p>
<p>(NativeMethodAccessorImpl.java:39)<br />
at sun.reflect.DelegatingMethodAccessorImpl.invoke</p>
<p>(DelegatingMethodAccessorImpl.java:25)<br />
at java.lang.reflect.Method.invoke(Method.java:597)<br />
at org.gradle.launcher.ProcessBootstrap.runNoExit(ProcessBootstrap.java:46)<br />
at org.gradle.launcher.ProcessBootstrap.run(ProcessBootstrap.java:28)<br />
at org.gradle.launcher.GradleMain.main(GradleMain.java:24)<br />
Caused by: : Java returned: 1</p></blockquote>
<p>-or-</p>
<blockquote><p>Could not find com.google.gwt.dev.Compiler. Make sure you have it in your classpath</p></blockquote>
<p>..and you&#8217;ve explored all options/fixes with no luck, perhaps you may be overlooking one elementary item. Is the project you&#8217;re trying to compile sitting in a <span style="color: #ff0000;">directory path with spaces</span>? If so, that&#8217;s your problem. It&#8217;s the age old Unix dislike for <span style="color: #ff0000;">spaces in directory</span>.</p>
]]></content:encoded>
			<wfw:commentRss>http://allscm.com/archives/could-not-find-com-google-gwt-dev-compiler-make-sure-you-have-it-in-your-classpath.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>No &#8216;Plugin-Class&#8217; entry in the manifest of &#8230;.hpi</title>
		<link>http://allscm.com/archives/no-plugin-class-entry-in-the-manifest-of-hpi.html</link>
		<comments>http://allscm.com/archives/no-plugin-class-entry-in-the-manifest-of-hpi.html#comments</comments>
		<pubDate>Tue, 29 Jun 2010 20:13:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Hudson]]></category>

		<guid isPermaLink="false">http://allscm.com/?p=294</guid>
		<description><![CDATA[If you ever wanted to evaluate Hudson CI tool, and ran into a problem while loading any plugin and you get the following error messages: No &#8216;Plugin-Class&#8217; entry in the manifest of &#8230;/path/to/plugin.hpi Then you&#8217;re experiencing a problem I just experienced. The problem lies in the particular version of the hudson.war file. Like me, you [...]]]></description>
			<content:encoded><![CDATA[<p>If you ever wanted to evaluate Hudson CI tool, and ran into a problem while loading any plugin and you get the following error messages:</p>
<p>No &#8216;Plugin-Class&#8217; entry in the manifest of &#8230;/path/to/plugin.hpi</p>
<p>Then you&#8217;re experiencing a problem I just experienced.  The problem lies in the particular version of the hudson.war file.  Like me, you probably retrieve an unofficial or out-dated version of the hudson.war.  </p>
]]></content:encoded>
			<wfw:commentRss>http://allscm.com/archives/no-plugin-class-entry-in-the-manifest-of-hpi.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Escape {&#8220;&#8216;&amp;} Characters in ANT</title>
		<link>http://allscm.com/archives/how-to-escape-characters-in-ant.html</link>
		<comments>http://allscm.com/archives/how-to-escape-characters-in-ant.html#comments</comments>
		<pubDate>Fri, 12 Feb 2010 01:23:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ANT]]></category>

		<guid isPermaLink="false">http://allscm.com/?p=283</guid>
		<description><![CDATA[How exactly do you escape special characters from ANT?  Say if you need to add extra &#8221; quotation characters within a property which already has a set of quotes? Here&#8217;s how to do it &#8212; use XML Character entity references: For &#62; use &#38;gt; For &#60; use  &#38;lt; For &#8220; use &#38;quot; For &#38; use [...]]]></description>
			<content:encoded><![CDATA[<p>How exactly do you escape special characters from ANT?  Say if you need to add extra &#8221; quotation characters within a property which already has a set of quotes?</p>
<p>Here&#8217;s how to do it &#8212; use XML Character entity references:</p>
<p>For <span style="color: #ff0000;">&gt;</span> use <span style="color: #ff0000;">&amp;gt;</span></p>
<p>For <span style="color: #ff0000;">&lt;</span> use <span style="color: #ff0000;"> &amp;lt;</span></p>
<p>For <span style="color: #ff0000;">&#8220;</span> use <span style="color: #ff0000;">&amp;quot;</span></p>
<p>For <span style="color: #ff0000;">&amp;</span> use <span style="color: #ff0000;">&amp;amp;</span></p>
<p>For <span style="color: #ff0000;">&#8216;</span> use <span style="color: #ff0000;">&amp;apos;</span><br />
Any other characters you need?  Drop me a line..</p>
]]></content:encoded>
			<wfw:commentRss>http://allscm.com/archives/how-to-escape-characters-in-ant.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>CruiseControl 2.7 Error: atusReportTask- Failed to reach dashboard instance</title>
		<link>http://allscm.com/archives/cruisecontrol-27-error-atusreporttask-failed-to-reach-dashboard-instance.html</link>
		<comments>http://allscm.com/archives/cruisecontrol-27-error-atusreporttask-failed-to-reach-dashboard-instance.html#comments</comments>
		<pubDate>Sun, 17 May 2009 10:05:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CruiseControl]]></category>

		<guid isPermaLink="false">http://allscm.com/?p=232</guid>
		<description><![CDATA[Are you using CruiseControl 2.7? Have you inspected the CC log lately? Seeing this error message? atusReportTask- Failed to reach dashboard instance : http://mydomain.com:8080/dashboard/buildloop/listener, either the dashboard has not started up or there is a network problem Recently I&#8217;ve been experiencing some build wlappc jspc freezing issue which I&#8217;ve fixed and works fine when I [...]]]></description>
			<content:encoded><![CDATA[<p>Are you using CruiseControl 2.7?  Have you inspected the CC log lately?  Seeing this error message?</p>
<h6>atusReportTask- Failed to reach dashboard instance : http://mydomain.com:8080/dashboard/buildloop/listener, either the dashboard has not started up or there is a network problem</h6>
<p>Recently I&#8217;ve been experiencing some build <a href="http://allscm.com/archives/weblogics-wlappc-ant-task-compilation-freezinghanging-errors.html">wlappc jspc freezing issue</a> which I&#8217;ve fixed and works fine when I run it via command line, but the build continue to freeze when it invokes via CruiseControl.  Turns out, there were quite a <a href="http://jira.public.thoughtworks.org/browse/CC-766">few people</a> who have experienced the same problem.</p>
<p>To fix it, I just ugpraded my CruiseControl suite from 2.7 to 2.8.2.  Quick and clean fix, forget spending time troubleshooting this problem at the low levels.  No time for that, software release must go out on schedule&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://allscm.com/archives/cruisecontrol-27-error-atusreporttask-failed-to-reach-dashboard-instance.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WebLogic&#8217;s wlappc ANT Task Compilation Freezing/Hanging Errors</title>
		<link>http://allscm.com/archives/weblogics-wlappc-ant-task-compilation-freezinghanging-errors.html</link>
		<comments>http://allscm.com/archives/weblogics-wlappc-ant-task-compilation-freezinghanging-errors.html#comments</comments>
		<pubDate>Sun, 17 May 2009 09:38:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ANT]]></category>
		<category><![CDATA[Build Framework]]></category>

		<guid isPermaLink="false">http://allscm.com/?p=224</guid>
		<description><![CDATA[Wow.   This little problem was extremely tricky to detect &#8212; mainly due to WebLogic&#8217;s wlappc ANT Task&#8217;s poor documentation.   In one of the projects I&#8217;m working on, there is a need to pre-compile WebLogic JSP so it will be much faster during deployment/runtime and we can catch any potential errors early.   Previously, this step of [...]]]></description>
			<content:encoded><![CDATA[<p>Wow.   This little problem was extremely tricky to detect &#8212; mainly due to WebLogic&#8217;s wlappc ANT Task&#8217;s poor documentation.   In one of the projects I&#8217;m working on, there is a need to pre-compile WebLogic JSP so it will be much faster during deployment/runtime and we can catch any potential errors early.   Previously, this step of the compilation has never given us any problem until when it decides to act up and freezes or hangs certain builds.  However, it was never an issue since restarting the build usually fixes it.</p>
<p>That is, until recently when the freezing/hanging started to happen on a consistent basis.  Here&#8217;s the snippet of the ANT Task:</p>
<h6>&lt;wlappc source=&#8221;${some.base.dir}&#8221; classpath=&#8221;${some.dir}/some_class.jar&#8221; verbose=&#8221;true&#8221;/&gt;</h6>
<p>The ANT output during build time is this and is where it freezes:</p>
<h6>[wlappc] [jspc] Compiling /path/to/jsp/foo.jsp</h6>
<p>Then after searching high and low on BEA&#8217;s site, I came upon this page (<a href="http://e-docs.bea.com/wls/docs81/programming/topics.html">Here</a>) which describes the task in detail.  I then realized I should add in idlVerbose=&#8221;true&#8221;.  Once I&#8217;ve added that, this is the output I got from the build:</p>
<h6>[wlappc] [jspc] Compiling /path/to/jsp/foo.jsp<br />
[wlappc] WARNING: unable to get an input stream for jar:file:/path/to/some/jar/WEB-INF/lib/struts.jar!/<br />
[wlappc] java.lang.NoClassDefFoundError: org/apache/bcelx/classfile/ClassParser<br />
[wlappc] [...]</h6>
<p>Muuuuch better.  To fix it, now I know I need to explicitly define bcel*.jar in the classpath.  Here&#8217;s the modified ANT task:</p>
<h6>&lt;wlappc source=&#8221;${some.base.dir}&#8221; <br/>classpath=&#8221;${some.dir}/some_class.jar;<br/>${env.ANT_HOME}/lib/bcel-5.1.jar&#8221;<br/> verbose=&#8221;true&#8221; idlVerbose=&#8221;true&#8221;/&gt;</h6>
<p>Notice the difference?  Yeah, that fixed it&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://allscm.com/archives/weblogics-wlappc-ant-task-compilation-freezinghanging-errors.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How To Increase Heap Size for ANT&#8217;s OutOfMemory Error using ANT_OPTS</title>
		<link>http://allscm.com/archives/how-to-increase-heap-size-for-ants-outofmemory-error-using-ant_opts.html</link>
		<comments>http://allscm.com/archives/how-to-increase-heap-size-for-ants-outofmemory-error-using-ant_opts.html#comments</comments>
		<pubDate>Sat, 16 May 2009 04:19:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ANT]]></category>
		<category><![CDATA[Build Framework]]></category>

		<guid isPermaLink="false">http://allscm.com/?p=208</guid>
		<description><![CDATA[Ever run into an ANT compilation or ANT task related compilation OutOfMemoryError problem? This little bugger of a problem can be rather tricky to debug. You may run into this problem when you have a large collection of source files to compile (think 1000+). You may also run into this problem with the following WebLogic [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-216" style="margin: 5px;" title="ant1" src="http://allscm.com/wp-content/uploads/2009/05/ant1.jpg" alt="ant1" width="150" height="133" />Ever run into an ANT compilation or ANT task related compilation OutOfMemoryError problem? This little bugger of a problem can be rather tricky to debug. You may run into this problem when you have a large collection of source files to compile (think 1000+). You may also run into this problem with the following WebLogic ANT tasks:</p>
<p>1. jwsc<br />
2. wlappc (<strong>LARGE</strong> JSP Pre-Compilations)</p>
<p>There may be other related compilation tasks, but bottom line is the Java Heap Size is too small. To increase it, you need to add $ANT_OPTS to your environment. An overkill, but also a sure way to fix the problem can be these values:</p>
<p>ANT_OPTS=&#8221;-Xmx1024m -Xms512m&#8221;</p>
<p>This variable must be set within your build machine&#8217;s environment. When ANT executes, it automatically includes $ANT_OPTS in its execution string. I hope this little hint will solve a lot of your future headaches. I&#8217;ve been troubleshooting a similar problem on a project I&#8217;m currently working on for the past 24 hours.  We went from plan a, to b, to c, to d, and started to run into a dead end and wanted to go for a temp fix by disabling pre-compilation.. until I found this root cause.</p>
<p>If you&#8217;re not currently using $ANT_OPTS, perhaps you should look into implementing that on your infrastructure. May end up saving you a heap of debugging time down the road. <img src='http://allscm.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://allscm.com/archives/how-to-increase-heap-size-for-ants-outofmemory-error-using-ant_opts.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Release Management Access Control</title>
		<link>http://allscm.com/archives/release-management-access-control.html</link>
		<comments>http://allscm.com/archives/release-management-access-control.html#comments</comments>
		<pubDate>Thu, 16 Apr 2009 20:10:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Build Framework]]></category>
		<category><![CDATA[Release Framework]]></category>
		<category><![CDATA[SCM Basics]]></category>

		<guid isPermaLink="false">http://allscm.com/?p=142</guid>
		<description><![CDATA[Access Control, at first glance seems to be a rather straight forward topic or task to handle.  Well, I can assure you it is not.  Especially when you&#8217;re working in an Engineering organization that seems to be schizophrenic at times in terms of its own unique identity.   I&#8217;m talking about how there should be [...]]]></description>
			<content:encoded><![CDATA[<p><strong><img class="alignleft size-full wp-image-149" style="margin: 5px;" title="lock" src="http://allscm.com/wp-content/uploads/2009/04/lock.png" alt="lock" width="73" height="95" />Access Control, </strong>at first glance seems to be a rather straight forward topic or task to handle.  Well, I can assure you it is not.  Especially when you&#8217;re working in an Engineering organization that seems to be schizophrenic at times in terms of its own unique identity.   I&#8217;m talking about how there should be a fine line drawn between Dev, QA, Tech Pubs, Process Group, Program Management, Product Management, Operations, etc.</p>
<p>Where there is a lack of established structure and process, there exists disorder and chaos relating to software Builds and Releases.  Access control must be implemented early on and strictly enforced to clearly define what can certain groups consume.</p>
<p>Builds, whether it be continuous, hourly, daily, or nightly in frequencies should <em>only</em> be made available to Dev and QA.  No exceptions.  In your org, if Program Management happens to fall under the umbrella of Engineering, then it wouldn&#8217;t hurt to grant Program Managers the same access privileges as that of the Dev and QA teams.</p>
<p>In no circumstances should groups such as Tech Pubs or Operations be given access to the builds.  That is the quickest way to creating confusion and risk having the software leaked prematurely or worst, given to the customer  without proper and formal approval.</p>
<p>Operations should only be given access to the released software (FCS &#8211; First Customer Shipment or GA &#8211; General Availability).  Tech Pubs and to a certain limited scope extent, Operations, can be given early access preview to the Alpha or Beta phase of the software in a separate distribution location made especially for these groups.  Since there may be needs for Tech Pubs to begin the documentation work and for Operations to go through the initial deployment exercises.</p>
<p>Aside from that, I believe you must keep the distribution points between the various groups well defined, structured, controlled, and most importantly, enforced.  Part of being a good Build and Release Engineer is being a good enforcer of processes.   Be unwavering in your stance when approached with a sob story or forceful demand for access to the builds distribution by a group outside of the QA or Dev teams.  Speak softly, but carry a big night stick.  <img src='http://allscm.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>I&#8217;ll be interested to learn how you manage your released software&#8217;s distribution in your org.  Please share your thoughts.</p>
]]></content:encoded>
			<wfw:commentRss>http://allscm.com/archives/release-management-access-control.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CruiseControl&#8217;s Scheduler of Multiple Builders</title>
		<link>http://allscm.com/archives/cruisecontrols-scheduler-of-multiple-builders.html</link>
		<comments>http://allscm.com/archives/cruisecontrols-scheduler-of-multiple-builders.html#comments</comments>
		<pubDate>Wed, 08 Apr 2009 00:33:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Automated Test Framework]]></category>
		<category><![CDATA[Build Framework]]></category>

		<guid isPermaLink="false">http://allscm.com/?p=120</guid>
		<description><![CDATA[Ever run into the problem where you must set multiple builders running different inside of CruiseControl&#8217;s scheduler block?  I recently had to do that for one of the projects I&#8217;m integrating, but kept on running into inconsistency in CruiseControl 2.8.2. My first attempt was this: &#60;schedule interval=&#34;900&#34;&#62; &#60;ant time=&#34;1200&#34; anthome=&#34;${ANTHOME}&#34; antworkingdir=&#34;${my_build.dir}&#34; buildfile=&#34;${my_build.file}&#34; target=&#34;build.all.then.test&#34; uselogger=&#34;true&#34; usedebug=&#34;false&#34;/&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>Ever run into the problem where you must set multiple builders running different inside of CruiseControl&#8217;s scheduler block?  I recently had to do that for one of the projects I&#8217;m integrating, but kept on running into inconsistency in CruiseControl 2.8.2.</p>
<p>My first attempt was this:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;schedule</span> <span style="color: #000066;">interval</span>=<span style="color: #ff0000;">&quot;900&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;ant</span> <span style="color: #000066;">time</span>=<span style="color: #ff0000;">&quot;1200&quot;</span></span>
<span style="color: #009900;">	 <span style="color: #000066;">anthome</span>=<span style="color: #ff0000;">&quot;${ANTHOME}&quot;</span></span>
<span style="color: #009900;">	 <span style="color: #000066;">antworkingdir</span>=<span style="color: #ff0000;">&quot;${my_build.dir}&quot;</span></span>
<span style="color: #009900;">	 <span style="color: #000066;">buildfile</span>=<span style="color: #ff0000;">&quot;${my_build.file}&quot;</span> </span>
<span style="color: #009900;">	 <span style="color: #000066;">target</span>=<span style="color: #ff0000;">&quot;build.all.then.test&quot;</span> </span>
<span style="color: #009900;">	 <span style="color: #000066;">uselogger</span>=<span style="color: #ff0000;">&quot;true&quot;</span></span>
<span style="color: #009900;">	 <span style="color: #000066;">usedebug</span>=<span style="color: #ff0000;">&quot;false&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>		
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;ant</span> <span style="color: #000066;">time</span>=<span style="color: #ff0000;">&quot;1800&quot;</span> </span>
<span style="color: #009900;">	 <span style="color: #000066;">anthome</span>=<span style="color: #ff0000;">&quot;${ANTHOME}&quot;</span></span>
<span style="color: #009900;">	 <span style="color: #000066;">antworkingdir</span>=<span style="color: #ff0000;">&quot;${my_build.dir}&quot;</span></span>
<span style="color: #009900;">	 <span style="color: #000066;">buildfile</span>=<span style="color: #ff0000;">&quot;${my_build.file}&quot;</span> </span>
<span style="color: #009900;">	 <span style="color: #000066;">target</span>=<span style="color: #ff0000;">&quot;build.all&quot;</span> </span>
<span style="color: #009900;">	 <span style="color: #000066;">uselogger</span>=<span style="color: #ff0000;">&quot;true&quot;</span></span>
<span style="color: #009900;">	 <span style="color: #000066;">usedebug</span>=<span style="color: #ff0000;">&quot;false&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>	
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;ant</span> <span style="color: #000066;">time</span>=<span style="color: #ff0000;">&quot;2400&quot;</span> </span>
<span style="color: #009900;">	 <span style="color: #000066;">anthome</span>=<span style="color: #ff0000;">&quot;${ANTHOME}&quot;</span></span>
<span style="color: #009900;">	 <span style="color: #000066;">antworkingdir</span>=<span style="color: #ff0000;">&quot;${my_build.dir}&quot;</span></span>
<span style="color: #009900;">	 <span style="color: #000066;">buildfile</span>=<span style="color: #ff0000;">&quot;${my_build.file}&quot;</span> </span>
<span style="color: #009900;">	 <span style="color: #000066;">target</span>=<span style="color: #ff0000;">&quot;build.all&quot;</span> </span>
<span style="color: #009900;">	 <span style="color: #000066;">uselogger</span>=<span style="color: #ff0000;">&quot;true&quot;</span></span>
<span style="color: #009900;">	 <span style="color: #000066;">usedebug</span>=<span style="color: #ff0000;">&quot;false&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>			 
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/schedule<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>Which translates to the following build frequency:  6pm and midnight just build using <em>build.all</em> target.  Noon build using <em>build.all.then.test</em> target.  </p>
<p>It would make sense right?  That didn&#8217;t work.  For some strange reasons, all three time frame, it built using <em>build.all</em>.</p>
<p>So then I modified it, according to CruiseControl&#8217;s documentation recommendation, to the following:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;schedule</span> <span style="color: #000066;">interval</span>=<span style="color: #ff0000;">&quot;900&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;ant</span> <span style="color: #000066;">time</span>=<span style="color: #ff0000;">&quot;1200&quot;</span></span>
<span style="color: #009900;">	 <span style="color: #000066;">anthome</span>=<span style="color: #ff0000;">&quot;${ANTHOME}&quot;</span></span>
<span style="color: #009900;">	 <span style="color: #000066;">antworkingdir</span>=<span style="color: #ff0000;">&quot;${my_build.dir}&quot;</span></span>
<span style="color: #009900;">	 <span style="color: #000066;">buildfile</span>=<span style="color: #ff0000;">&quot;${my_build.file}&quot;</span> </span>
<span style="color: #009900;">	 <span style="color: #000066;">target</span>=<span style="color: #ff0000;">&quot;build.all.then.test&quot;</span> </span>
<span style="color: #009900;">	 <span style="color: #000066;">uselogger</span>=<span style="color: #ff0000;">&quot;true&quot;</span></span>
<span style="color: #009900;">	 <span style="color: #000066;">usedebug</span>=<span style="color: #ff0000;">&quot;false&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>		
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;ant</span> <span style="color: #000066;">multiple</span>=<span style="color: #ff0000;">&quot;1&quot;</span> </span>
<span style="color: #009900;">	 <span style="color: #000066;">anthome</span>=<span style="color: #ff0000;">&quot;${ANTHOME}&quot;</span></span>
<span style="color: #009900;">	 <span style="color: #000066;">antworkingdir</span>=<span style="color: #ff0000;">&quot;${my_build.dir}&quot;</span></span>
<span style="color: #009900;">	 <span style="color: #000066;">buildfile</span>=<span style="color: #ff0000;">&quot;${my_build.file}&quot;</span> </span>
<span style="color: #009900;">	 <span style="color: #000066;">target</span>=<span style="color: #ff0000;">&quot;build.all&quot;</span> </span>
<span style="color: #009900;">	 <span style="color: #000066;">uselogger</span>=<span style="color: #ff0000;">&quot;true&quot;</span></span>
<span style="color: #009900;">	 <span style="color: #000066;">usedebug</span>=<span style="color: #ff0000;">&quot;false&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>			 
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/schedule<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>Which translates to check for changes and build every 15mins, but for the 12pm build, run the <em>build.all.then.test</em> instead.  That did NOT work.. Did you run into a similar problem?  What was your solution?</p>
]]></content:encoded>
			<wfw:commentRss>http://allscm.com/archives/cruisecontrols-scheduler-of-multiple-builders.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Build Reproducibility Problem</title>
		<link>http://allscm.com/archives/build-reproducibility-problem.html</link>
		<comments>http://allscm.com/archives/build-reproducibility-problem.html#comments</comments>
		<pubDate>Mon, 14 Apr 2008 09:51:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Build Framework]]></category>
		<category><![CDATA[Release Framework]]></category>

		<guid isPermaLink="false">http://allscm.com/?p=69</guid>
		<description><![CDATA[I&#8217;ve seen a lot of organizations running into this problem such that their build environment gets to a point where it is so complicated that the best way to preserve it is through archiving the image.  I&#8217;m talking about archiving the entire build machine using image tools such as Norton Ghost, VMWare, or Microsoft VirtualPC.  [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-167" style="margin: 5px;" title="problem" src="http://allscm.com/wp-content/uploads/2008/04/problem.png" alt="problem" width="78" height="76" />I&#8217;ve seen a lot of organizations running into this problem such that their build environment gets to a point where it is so complicated that the best way to preserve it is through archiving the image.   I&#8217;m talking about archiving the entire build machine using image tools such as Norton Ghost, VMWare, or Microsoft VirtualPC.   I&#8217;ve used all those tools and from past experience, I found that VMWare images works best though not without the cost of disk storage space &#8212; but HDD has gotten so cheap nowadays it no longer is an issue.</p>
<p>So why build machine image archiving you may ask?   Because sometimes when certain software gets released (1.0), the new (2.0) continues on the trunk with added features and *changes* compiler(s).   Now as 2.0 goes forward, the legacy 1.0 may still have bug fixes and the build loop may need to be brought back to reproduce a certain build; with that in mind, having a VMWare image works wonders in such situation.   There is a long list of benefits for such practice as well, but I&#8217;m not going through them now; I may add to this post in the future&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://allscm.com/archives/build-reproducibility-problem.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How To Do Build Dependency</title>
		<link>http://allscm.com/archives/how-to-do-build-dependency.html</link>
		<comments>http://allscm.com/archives/how-to-do-build-dependency.html#comments</comments>
		<pubDate>Tue, 12 Feb 2008 09:45:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Build Framework]]></category>
		<category><![CDATA[Continuous Integration]]></category>

		<guid isPermaLink="false">http://allscm.com/?p=62</guid>
		<description><![CDATA[Awhile back when I was implementing a particular build into the CI model, I ran into a dependency debate; both with my own as well as the development group.  The project (A) in question has a lib dependency on another project (B).   The difference in view came when I suggested for A to depend [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-175" style="margin: 5px;" title="dependency" src="http://allscm.com/wp-content/uploads/2008/02/dependency.png" alt="dependency" width="121" height="98" />Awhile back when I was implementing a particular build into the CI model, I ran into a dependency debate; both with my own as well as the development group.   The project (<strong>A</strong>) in question has a lib dependency on another project (<strong>B</strong>).    The difference in view came when I suggested for <strong>A</strong> to depend on latest successful build (from a label) of <strong>B</strong>.   The other parties were against my suggestion and argued that <strong>A</strong> should be depending on build <strong>B</strong> on an absolute term meaning <strong>A</strong> will always point to the latest and greatest of <strong>B</strong>.</p>
<p>The problem for the latter argument is that <strong>A</strong> fails whenever <strong>B</strong> fails because there is no safety net for <strong>A</strong>.   As I was being overwhelmingly outnumbered, I caved in to the second suggestion which is to have <strong>A</strong> directly point to <strong>B</strong>&#8216;s latest and greatest build.   Well, suffice it to say the decision came back to bite us.</p>
<p>We got bitten and yours truly had to spend additional time in fixing and changing the build scripts to adopt my original suggestion.   Now whenever <strong>B</strong> has a successful build, the script slaps on a label for <strong>A</strong> to point and consume.   This way we successfully ensure <strong>A</strong> will have the freshest dependency on <strong>B</strong> while avoiding unnecessary broken builds due to &#8220;tip&#8221; dependency.</p>
]]></content:encoded>
			<wfw:commentRss>http://allscm.com/archives/how-to-do-build-dependency.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

