[Pdx-pm] Configuration Management in Continuous Integration environments

Robert Buels rmb32 at cornell.edu
Tue Dec 7 16:40:36 PST 2010


I do exactly this.  I use Shipwright.

The Shipwright code is not very good.  It needs a rewrite.  It has lots 
of rough edges.

Shipwright bundles a bunch of dists together into a big super-dist kind 
of thing, and it has a build script that ties them together.  It can 
(buggily) crawl and import your dependencies when you import a Perl dist 
into it.

I use git to version this big ball of source code that Shipwright puts 
together for me.

Then, Shipwright can build the whole thing (compiling all the XS modules 
you have in there, etc) into a second ball of stuff under a single 
directory, which is deployable.

I take this directory and put it into a Debian package for deployment on 
our machines.

This all works pretty well.  The downsides are a.) the Shipwright code 
itself is fugly, making its many bugs hard to fix, and b.) Shipwright 
can't (or at least I haven't figured out how to make it) restart a 
failed build, which makes troubleshooting build problems time-consuming.

But all in all, this works pretty well.  You have snapshots of all the 
app's dependencies, and you can deploy the app to a machine without 
assuming any non-core modules.

If you want, grab dukeleto or me in #pdx-pm or at one of the meetings, 
and you can git-clone our deployment repo (several GB) and play around 
with it.

Rob

Nick Wehr wrote:
> Hello everyone,
> 
> First off, beware, I'm a bit nutty when it comes to configuration 
> management. I've recently deployed a Hudson instance and wanted to move 
> some Catalyst projects into it. What I'd like to solicit feedback on 
> here is: /how are you managing your Perl dependencies in these build 
> systems? /Here's some goals I have:
> 
>     * do not assume any non-core modules are installed on the build platform
>     * use specific version of modules in the built product - product is
>       a Catalyst website for example (@inc or use lib)
>     * need to archive specific version of CPAN dependencies offline;
>       this means we can recreate a product without an internet connection
>     * allow for the rebuild of dependencies when the build platform has
>       changed; this is meant to address a platform change from 32bit to
>       64bit
> 
> What I'm looking at is either using local::lib or PREFIX & LIB w/ cpan. 
> What do you think?
> 
> Thanks in advance,
> -nicholas
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Pdx-pm-list mailing list
> Pdx-pm-list at pm.org
> http://mail.pm.org/mailman/listinfo/pdx-pm-list



More information about the Pdx-pm-list mailing list