[p4] Deployment files in Perforce or Maven?
Slava Imeshev
imeshev at yahoo.com
Tue Jan 9 23:27:30 PST 2007
That's an interesting point.
Being in software build automation and management for awhile
I strongly suggest keeping *all* product dependencies in Perforce.
The main problem with the external dependency repositories is that
they introduce an additional maintenance point that makes reproducing
builds practically impossible
The only realistic way to reproduce a build that has ever gone outside
of a build box while an external dependency repository is in picture is to
make snapshot backups of that repository in sync with a state of the codeline
at the build time. Bullet and foolproof implementations of such process
remain to be seen. External dependency repositories make
multi-codeline product development plain dangerous.
One may argue that adoption of tools like maven grows but if you
look closer it is mainly in open source area where a [scary] practice
of "releasing from the tip" is common, and past states are not important
because of no need to support past releases, nor reproducible.
Comparing to the above Perforce capabilities such as speed and ease
of use, and practically free disk storage and network bandwidth,
storing and managing dependencies in Perforce depots is simple,
transparent and *very* robust. I strongly recommend this.
I'd guess there world be other opinions. Mine one has grown from
multiple client engagements and painful customers' experience. The
recent one is just a month old when we had to untangle mess created
by use of a "local repository". A customer discovered that they haven't
had a clean build for about 6 months after the maven "repository" "glitched".
"Latest" "clean" build was picking up a "snapshot" dependence
that was gone long ago from the code.
As we touched this topic, I also recommend keeping the dependencies
along with codeline, not in a separate "dependencies" codeline, i.e.
a well-organized codeline IMHO should look like:
//depot/product_version_1/3rdparty
//depot/product_version_1/src
//depot/product_version_1/bin
//depot/product/3rdparty
//depot/product/src
//depot/product/bin
and *not* like this:
//depot/3rdparty
//depot/product_version_1/src
//depot/product_version_1/bin
//depot/product/src
//depot/product/bin
Just my 2c...
Regards,
Slava Imeshev
vimeshev at viewtier.com
www.viewtier.com
----- Original Message -----
From: "Jeff Jensen" <jeffjensen at upstairstechnology.com>
To: <perforce-user at perforce.com>
Sent: Tuesday, January 09, 2007 7:37 PM
Subject: Re: [p4] Deployment files in Perforce or Maven?
> I suggest starting with none in Perforce and all in the Maven repo. Over
> time, you may find need to store one or more build artifacts in Perforce. I
> prefer the minimalist approach when one is not sure; that allows adding when
> discovery occurs.
>
> As for "...in your organization", I introduced Perforce and Maven into my
> current customer about 1.5 years ago (I have prior experience with both). I
> setup all development builds to use only the internal Maven repo (setup
> Proximity for that); this include continuous integration builds with
> CruiseControl (CC just calls Maven to build). Maven "snapshot" feature is
> very useful for always using the latest build in the repo - the case with
> ongoing development, but not for a release prep/codeline.
>
> Initially, the build team *had* to put the releases in Perforce, and I
> didn't argue. With a recent situation change we went through, I took the
> opportunity and was able to convince them to move them out. It was not
> needed in this situation and they "saw the light".
>
>
> -----Original Message-----
> From: perforce-user-bounces at perforce.com
> [mailto:perforce-user-bounces at perforce.com] On Behalf Of
> vegard.setrenes at telenor.com
> Sent: Tuesday, January 09, 2007 9:36 AM
> To: perforce-user at perforce.com
> Subject: [p4] Deployment files in Perforce or Maven?
>
> Hi,
>
> In my department we use Perforce on all Java development, and we have been
> following the "best practice" of not storing anything in the depot, other
> than what's necessary to do a build. In other words, we don't check in
> binary archive files like EARs and JARs.
>
> The source code for one of our systems was imported from cvs one year ago.
> We have some deployment scripts that depend on retrieving EARs and JARs from
> dedicated deployment directories in the same old cvs. These scripts copy the
> deployment files to multiple test or production servers.
>
> To be able to finally get rid of the cvs base, we are looking for the best
> way of keeping the deployment files. Should we use Perforce or a web based
> Maven repository?
>
> It is clear that we do not need all historic revisions of the files. We are
> just looking for a good way to make them available for the automated
> deployment scripts. So I guess we could specify the +S modifier for a
> designated part of the Perforce depot. But ideally there should be a way to
> keep just the N last revisions, making it possible for the deployment
> scripts to do rollbacks. Is this possible without using the obliterate
> command?
>
> How do you organize your deployment files in your organization?
>
> Thanks,
>
> - Vegard
>
> _______________________________________________
> perforce-user mailing list - perforce-user at perforce.com
> http://maillist.perforce.com/mailman/listinfo/perforce-user
>
> _______________________________________________
> perforce-user mailing list - perforce-user at perforce.com
> http://maillist.perforce.com/mailman/listinfo/perforce-user
More information about the perforce-user
mailing list