<?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/"
		>
<channel>
	<title>Comments on: Configurable Builds: One configuration file per environment</title>
	<atom:link href="http://www.markhneedham.com/blog/2008/09/02/configurable-builds-one-configuration-file-per-environment/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.markhneedham.com/blog/2008/09/02/configurable-builds-one-configuration-file-per-environment/</link>
	<description>Thoughts on Software Development</description>
	<lastBuildDate>Mon, 15 Mar 2010 18:05:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Configurable Builds: One configuration file per machine at Mark Needham</title>
		<link>http://www.markhneedham.com/blog/2008/09/02/configurable-builds-one-configuration-file-per-environment/comment-page-1/#comment-287</link>
		<dc:creator>Configurable Builds: One configuration file per machine at Mark Needham</dc:creator>
		<pubDate>Sat, 13 Sep 2008 02:57:42 +0000</pubDate>
		<guid isPermaLink="false">http://www.markhneedham.com/blog/?p=278#comment-287</guid>
		<description>[...] One configuration file per environment [...]</description>
		<content:encoded><![CDATA[<p>[...] One configuration file per environment [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Eric Minick</title>
		<link>http://www.markhneedham.com/blog/2008/09/02/configurable-builds-one-configuration-file-per-environment/comment-page-1/#comment-167</link>
		<dc:creator>Eric Minick</dc:creator>
		<pubDate>Tue, 02 Sep 2008 16:55:02 +0000</pubDate>
		<guid isPermaLink="false">http://www.markhneedham.com/blog/?p=278#comment-167</guid>
		<description>In general though, I&#039;d see a build per environment as an anti-pattern. Rebuilding between deployments to various testing environments hurts your traceability between those tests and the guarantee that what you deploy in a late testing environment or production was actually tested earlier.

A similar nant deployment script that takes properties per environment and modifies an already built application&#039;s configuration files based on those properties seems to be along the same lines, but without the unneeded rebuilding.

At least we hope the rebuilding isn&#039;t needed. We don&#039;t have configuration being compiled with source code do we? :)</description>
		<content:encoded><![CDATA[<p>In general though, I'd see a build per environment as an anti-pattern. Rebuilding between deployments to various testing environments hurts your traceability between those tests and the guarantee that what you deploy in a late testing environment or production was actually tested earlier.</p>
<p>A similar nant deployment script that takes properties per environment and modifies an already built application's configuration files based on those properties seems to be along the same lines, but without the unneeded rebuilding.</p>
<p>At least we hope the rebuilding isn't needed. We don't have configuration being compiled with source code do we? <img src='http://www.markhneedham.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Configurable Builds: One configuration file per user at Mark Needham</title>
		<link>http://www.markhneedham.com/blog/2008/09/02/configurable-builds-one-configuration-file-per-environment/comment-page-1/#comment-162</link>
		<dc:creator>Configurable Builds: One configuration file per user at Mark Needham</dc:creator>
		<pubDate>Tue, 02 Sep 2008 12:59:58 +0000</pubDate>
		<guid isPermaLink="false">http://www.markhneedham.com/blog/?p=278#comment-162</guid>
		<description>[...] on from my first post about making builds configurable, the second way of doing this that I have seen is to have one [...]</description>
		<content:encoded><![CDATA[<p>[...] on from my first post about making builds configurable, the second way of doing this that I have seen is to have one [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jim Barritt</title>
		<link>http://www.markhneedham.com/blog/2008/09/02/configurable-builds-one-configuration-file-per-environment/comment-page-1/#comment-161</link>
		<dc:creator>Jim Barritt</dc:creator>
		<pubDate>Tue, 02 Sep 2008 12:51:13 +0000</pubDate>
		<guid isPermaLink="false">http://www.markhneedham.com/blog/?p=278#comment-161</guid>
		<description>We have a similar thing except it gets its filename from the name of the machine you are on when on a dev box...

so for example my machine name might be GNM23454 and there would be a properties file called :

environment.GNM23454.properties 

In there is a DB connection and everyone has their own login and oracle DB schema.

We have a couple of helper targets on the build which tell you which DB you are connected to.

Its all running under ANT</description>
		<content:encoded><![CDATA[<p>We have a similar thing except it gets its filename from the name of the machine you are on when on a dev box&#8230;</p>
<p>so for example my machine name might be GNM23454 and there would be a properties file called :</p>
<p>environment.GNM23454.properties </p>
<p>In there is a DB connection and everyone has their own login and oracle DB schema.</p>
<p>We have a couple of helper targets on the build which tell you which DB you are connected to.</p>
<p>Its all running under ANT</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Needham</title>
		<link>http://www.markhneedham.com/blog/2008/09/02/configurable-builds-one-configuration-file-per-environment/comment-page-1/#comment-158</link>
		<dc:creator>Mark Needham</dc:creator>
		<pubDate>Tue, 02 Sep 2008 08:32:29 +0000</pubDate>
		<guid isPermaLink="false">http://www.markhneedham.com/blog/?p=278#comment-158</guid>
		<description>As necessary is probably more accurate you&#039;re right.

It&#039;s always interesting looking at the trade off you have to take between making something configurable and the levels of indirectness you end up creating as a result. 

From what I&#039;ve seen I think at most you should only have one extra configuration file that you need to look in for properties - when you have the properties scattered all over the place it becomes really painful as you say.

So in this case we would only need to look for properties in dev.properties.xml or qa.properties.xml and that would give us everything we need.</description>
		<content:encoded><![CDATA[<p>As necessary is probably more accurate you're right.</p>
<p>It's always interesting looking at the trade off you have to take between making something configurable and the levels of indirectness you end up creating as a result. </p>
<p>From what I've seen I think at most you should only have one extra configuration file that you need to look in for properties &#8211; when you have the properties scattered all over the place it becomes really painful as you say.</p>
<p>So in this case we would only need to look for properties in dev.properties.xml or qa.properties.xml and that would give us everything we need.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jim Arnold</title>
		<link>http://www.markhneedham.com/blog/2008/09/02/configurable-builds-one-configuration-file-per-environment/comment-page-1/#comment-157</link>
		<dc:creator>Jim Arnold</dc:creator>
		<pubDate>Tue, 02 Sep 2008 08:26:20 +0000</pubDate>
		<guid isPermaLink="false">http://www.markhneedham.com/blog/?p=278#comment-157</guid>
		<description>&quot;One of the most important things when coding build files is to try and make them as configurable as possible&quot;.

As possible?  Or as necessary?  I dread wading through heavily configurable build files; jumping around to figure out where properties are defined and set.  I&#039;m not saying they shouldn&#039;t be flexible, but YAGNI applies to scripts too!</description>
		<content:encoded><![CDATA[<p>"One of the most important things when coding build files is to try and make them as configurable as possible".</p>
<p>As possible?  Or as necessary?  I dread wading through heavily configurable build files; jumping around to figure out where properties are defined and set.  I'm not saying they shouldn't be flexible, but YAGNI applies to scripts too!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ketan Padegaonkar</title>
		<link>http://www.markhneedham.com/blog/2008/09/02/configurable-builds-one-configuration-file-per-environment/comment-page-1/#comment-154</link>
		<dc:creator>Ketan Padegaonkar</dc:creator>
		<pubDate>Tue, 02 Sep 2008 04:45:56 +0000</pubDate>
		<guid isPermaLink="false">http://www.markhneedham.com/blog/?p=278#comment-154</guid>
		<description>Here&#039;s what we do for the Twist builds, given that we build and deploy on various platforms:






build.developer.properties is an override for it all, which is what most developers on &#039;non-standard configuration use&#039;

We check in the property files for all hosts into svn. So individual machines can always pick them up from the source tree. Dev machines probably don&#039;t have this checked in.

build.properties is just the default values for everything else.</description>
		<content:encoded><![CDATA[<p>Here's what we do for the Twist builds, given that we build and deploy on various platforms:</p>
<p>build.developer.properties is an override for it all, which is what most developers on 'non-standard configuration use'</p>
<p>We check in the property files for all hosts into svn. So individual machines can always pick them up from the source tree. Dev machines probably don't have this checked in.</p>
<p>build.properties is just the default values for everything else.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
