ant-ivy-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Juha Ranta <juha.ra...@iki.fi>
Subject Re: Continuous integration and deciding whether to build
Date Fri, 29 Feb 2008 21:12:43 GMT

Hi Nicolas,

On 29.2.2008, at 22:40, Nicolas Lalevée wrote:
>
> I have no answer but a question :)
> It seems strange to me of having a dynamic revision that does not  
> change between two builds. What is the rationale behind it ?
>
> Nicolas
>


Each project in CVS has its own ivy.xml in the root directory. As an  
example, let's consider that the mainline development of a projects  
takes place in the trunk of CVS and the ivy.xml in this projects says  
"latest.integration" as the revision for some of the dependencies.  
When the build server checks out the project from CVS, it also gets  
the ivy.xml with the "latest.integration" dependencies". However, when  
Ivy resolves the "latest.integration" dependencies, those resolved  
dependencies get an actual revision. For example, the build may  
resolve and retrieve revision 13 of dom4.jar and use that during the  
build. When the next build is triggered, it may be that there's  
revision 14 of dom4j.jar in the repository, so this new build will  
retrieve revision 14 of dom4j.jar. The "dynamic" ivy.xml of the  
project in CVS has not changed at all, but the generated "static"  
ivy.xml has different revisions in the dom4j.jar dependency.

During my builds from the build server, my script actually checks in  
the generated "static" ivy.xml to CVS, tags it with the build tag, and  
then checks in the original "dynamic" ivy.xml. This way the builds are  
reproducible and this is the foundation from which I create release or  
bug fix branches, for instance. I know it's not necessary to make this  
kind of "snapshots" of every single continuous integration build like  
I'm doing, but making this kind of "snapshots" at milestones is very  
important if you, for instance, possible need to make make bug fixes  
on earlier versions of your project while you're already developing  
new stuff.





Mime
View raw message