[Pdx-pm] Configuration Management in Continuous Integration environments
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
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
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
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
> What I'm looking at is either using local::lib or PREFIX & LIB w/ cpan.
> What do you think?
> Thanks in advance,
> Pdx-pm-list mailing list
> Pdx-pm-list at pm.org
More information about the Pdx-pm-list