<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments on: Automatic Software Publishing/Distributing Agent</title>
	<atom:link href="http://igorbrejc.net/development/continuous-integration/automatic-software-publishingdistributing-agent/feed" rel="self" type="application/rss+xml" />
	<link>http://igorbrejc.net/development/continuous-integration/automatic-software-publishingdistributing-agent</link>
	<description>Just another developer's weblog</description>
	<lastBuildDate>Fri, 03 Feb 2012 18:14:03 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
	<item>
		<title>By: igorbrejc.net &#187; Brainstorming: Distributed Continuous Integration System</title>
		<link>http://igorbrejc.net/development/continuous-integration/automatic-software-publishingdistributing-agent/comment-page-1#comment-15121</link>
		<dc:creator>igorbrejc.net &#187; Brainstorming: Distributed Continuous Integration System</dc:creator>
		<pubDate>Wed, 14 Jan 2009 18:34:07 +0000</pubDate>
		<guid isPermaLink="false">http://igorbrejc.net/?p=243#comment-15121</guid>
		<description>&lt;p&gt;[...] is the second part of my brainstorming &quot;session&quot; about automating software deployment and execution on a remote computer from yesterday. I did some investigation and found a very useful resource (part of the Paul [...]&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>[...] is the second part of my brainstorming &quot;session&quot; about automating software deployment and execution on a remote computer from yesterday. I did some investigation and found a very useful resource (part of the Paul [...]</p>]]></content:encoded>
	</item>
	<item>
		<title>By: breki</title>
		<link>http://igorbrejc.net/development/continuous-integration/automatic-software-publishingdistributing-agent/comment-page-1#comment-15120</link>
		<dc:creator>breki</dc:creator>
		<pubDate>Wed, 14 Jan 2009 17:38:38 +0000</pubDate>
		<guid isPermaLink="false">http://igorbrejc.net/?p=243#comment-15120</guid>
		<description>&lt;p&gt;Hi, Jean-Philippe,&lt;/p&gt;

&lt;p&gt;Thanks for your comment. In fact I was preparing a continuation post today which mentions SCP and SSH as a way to do this kind of work, I&#039;ll also mention your suggestions in it. As you will see, I also took a wider look at the whole thing - running distributed CI processes, which I guess is be the opposite of what you&#039;re suggesting (concentrating on just the remote invocation). Well as long as this is just brainstorming (=daydreaming), I guess I&#039;m OK ;)&lt;/p&gt;

&lt;p&gt;As for CruiseControl external properties, looks like CCNet also supports them through the configuration preprocessor (http://confluence.public.thoughtworks.org/display/CCNET/Configuration+Preprocessor), but I haven&#039;t used this feature so far. The main problem I have with CCNet is that it doesn&#039;t really do distributed builds - by &quot;really&quot; I mean that, yes, you can set up triggers between projects, but they are in essence treated as separate projects, which makes them harder to monitor and maintain and also makes the whole setup quite brittle. I&#039;ll write more about this in today&#039;s post.&lt;/p&gt;

&lt;p&gt;Best regatds,
Igor&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Hi, Jean-Philippe,</p>

<p>Thanks for your comment. In fact I was preparing a continuation post today which mentions SCP and SSH as a way to do this kind of work, I&#8217;ll also mention your suggestions in it. As you will see, I also took a wider look at the whole thing &#8211; running distributed CI processes, which I guess is be the opposite of what you&#8217;re suggesting (concentrating on just the remote invocation). Well as long as this is just brainstorming (=daydreaming), I guess I&#8217;m OK <img src='http://igorbrejc.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>

<p>As for CruiseControl external properties, looks like CCNet also supports them through the configuration preprocessor (<a href="http://confluence.public.thoughtworks.org/display/CCNET/Configuration+Preprocessor" rel="nofollow">http://confluence.public.thoughtworks.org/display/CCNET/Configuration+Preprocessor</a>), but I haven&#8217;t used this feature so far. The main problem I have with CCNet is that it doesn&#8217;t really do distributed builds &#8211; by &#8220;really&#8221; I mean that, yes, you can set up triggers between projects, but they are in essence treated as separate projects, which makes them harder to monitor and maintain and also makes the whole setup quite brittle. I&#8217;ll write more about this in today&#8217;s post.</p>

<p>Best regatds,
Igor</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Jean-Philippe Daigle</title>
		<link>http://igorbrejc.net/development/continuous-integration/automatic-software-publishingdistributing-agent/comment-page-1#comment-15116</link>
		<dc:creator>Jean-Philippe Daigle</dc:creator>
		<pubDate>Wed, 14 Jan 2009 15:54:42 +0000</pubDate>
		<guid isPermaLink="false">http://igorbrejc.net/?p=243#comment-15116</guid>
		<description>&lt;p&gt;Argh, the comment form chewed up angle brackets. The sentence &quot;Ant, for example, has an optional task useful for this&quot;, should have been &quot;Ant, for example, has an optional &lt;SCP&gt; task useful for this&quot;&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Argh, the comment form chewed up angle brackets. The sentence &#8220;Ant, for example, has an optional task useful for this&#8221;, should have been &#8220;Ant, for example, has an optional &lt;SCP&gt; task useful for this&#8221;</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Jean-Philippe Daigle</title>
		<link>http://igorbrejc.net/development/continuous-integration/automatic-software-publishingdistributing-agent/comment-page-1#comment-15115</link>
		<dc:creator>Jean-Philippe Daigle</dc:creator>
		<pubDate>Wed, 14 Jan 2009 15:52:54 +0000</pubDate>
		<guid isPermaLink="false">http://igorbrejc.net/?p=243#comment-15115</guid>
		<description>&lt;p&gt;Firstly, a tip on running multiple CruiseControl setups: when I need several build/test servers to run similar CruiseControl configs, the easiest thing to do is to have a single master CruiseControl config checked into SVN (along with all the binaries/jar files), and have its config.xml refer to an external properties file with the machine name (cruise-properties-${MACHINE}.properties). This way the whole config is shared between machines, except variable properties, like how to label the builds and emails, etc. Adding a new machine is just a matter of checking out the whole tree onto it and creating a new property file. [I haven&#039;t tried CruiseControl.NET, but it probably has similar concepts.]&lt;/p&gt;

&lt;p&gt;Now, for your job runner service - I think there&#039;s a good idea behind this, but its scope should be limited. Your description is conflating two problems: deploying builds to a test host, and triggering a remote test.&lt;/p&gt;

&lt;p&gt;The file deployment problem is already solved. The remote asynchronous job triggering isn&#039;t, so this project might do well to focus only on the second part, and it would be a &lt;em&gt;really&lt;/em&gt; useful tool.&lt;/p&gt;

&lt;p&gt;Deployment: Your regular build script already produces a staging directory and a compressed archive. It&#039;s trivial to just rsync the whole staging directory to a testing server, or a central file server, or scp the compressed archive to each test host (Ant, for example, has an optional  task useful for this). Your testing server, whatever the OS, could also just mount the build server&#039;s output share into its own filesystem and run from there. Perhaps a cleaner approach is to concentrate this responsibility on the test runner, so there&#039;s no coupling between the build host and the test rigs - I do this by having the test job pull down the latest build whenever it starts up. You mention the annoyance of writing a separate script each time, but it doesn&#039;t have to be that way. It&#039;s quite easy to write a simple generic Ant script that takes in a project name and pulls down the latest build for that project from your deployment server, extracts it locally, and exits. A generic script like this can be used across all your projects and build machines, as long as it&#039;s called with different arguments.&lt;/p&gt;

&lt;p&gt;So I think remote triggering jobs (maybe using an XML-RPC request to your new service?) is where the exciting unsolved problems are :)&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Firstly, a tip on running multiple CruiseControl setups: when I need several build/test servers to run similar CruiseControl configs, the easiest thing to do is to have a single master CruiseControl config checked into SVN (along with all the binaries/jar files), and have its config.xml refer to an external properties file with the machine name (cruise-properties-${MACHINE}.properties). This way the whole config is shared between machines, except variable properties, like how to label the builds and emails, etc. Adding a new machine is just a matter of checking out the whole tree onto it and creating a new property file. [I haven't tried CruiseControl.NET, but it probably has similar concepts.]</p>

<p>Now, for your job runner service &#8211; I think there&#8217;s a good idea behind this, but its scope should be limited. Your description is conflating two problems: deploying builds to a test host, and triggering a remote test.</p>

<p>The file deployment problem is already solved. The remote asynchronous job triggering isn&#8217;t, so this project might do well to focus only on the second part, and it would be a <em>really</em> useful tool.</p>

<p>Deployment: Your regular build script already produces a staging directory and a compressed archive. It&#8217;s trivial to just rsync the whole staging directory to a testing server, or a central file server, or scp the compressed archive to each test host (Ant, for example, has an optional  task useful for this). Your testing server, whatever the OS, could also just mount the build server&#8217;s output share into its own filesystem and run from there. Perhaps a cleaner approach is to concentrate this responsibility on the test runner, so there&#8217;s no coupling between the build host and the test rigs &#8211; I do this by having the test job pull down the latest build whenever it starts up. You mention the annoyance of writing a separate script each time, but it doesn&#8217;t have to be that way. It&#8217;s quite easy to write a simple generic Ant script that takes in a project name and pulls down the latest build for that project from your deployment server, extracts it locally, and exits. A generic script like this can be used across all your projects and build machines, as long as it&#8217;s called with different arguments.</p>

<p>So I think remote triggering jobs (maybe using an XML-RPC request to your new service?) is where the exciting unsolved problems are <img src='http://igorbrejc.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>]]></content:encoded>
	</item>
</channel>
</rss>

