Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>This is actually a pretty subtle question. You're talking about how to manage features of the <em>environment</em> which are necessary in order to allow your build to proceed. In this case it's the top level of your code toolchain, but the problem can be generalised to include the entire toolchain, and even key aspects of the operating system.</p> <p>In my place of work, we have various requirements of the underlying operating system before our code will successfully run. This includes machine-specific configurations as well as ensuring correct versions of system libraries and language runtimes are present. We've dealt with this by maintaining a standard generic build machine image which contains the toolchain requirements we need. We can push this out to a virgin machine and get a basic environment that contains the complete toolchain and any auxiliary programs.</p> <p>We then use <a href="http://fsvs.tigris.org/" rel="nofollow noreferrer">fsvs</a> to version control any additional configuration, which can be layered on to specific groups of machines as needed.</p> <p>Finally, we use custom scripts hooked in to our CI server (we use <a href="http://www.javaworld.com/javaworld/jw-12-2008/jw-12-hudson-ci.html" rel="nofollow noreferrer">Hudson</a>) to perform any pre-processing steps required for specific projects.</p> <p>The main advantages for us of this approach is:</p> <ol> <li>We can build and deploy developer and production machines very easily (and have IT handle this side of the problem).</li> <li>We can easily replace failed machines.</li> <li>We have a known environment for testing (we install everything to a simulated 'production server' before going live).</li> <li>We (the software team) version control critical configuration details and any explicit pre-processing steps.</li> </ol>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload