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 Continuous integration and deciding whether to build
Date Fri, 29 Feb 2008 19:24:25 GMT
Hello,

As an introduction, I have an existing build system that I'm trying to  
improve by using Ivy. I think Ivy is very cool, so big thanks for it!

I have a build server with projects checked out from CVS in one  
directory like this:

projectA/
projectB/
projectC/
projectD/
....

Each project has in its root directory a build.xml and ivy.xml which  
also come from CVS.

Each of these projects can build, tag, etc, itself and finally publish  
its artifact to an Ivy repository independently without directly  
referencing other projects. Now I'd like to implement a simple script  
which polls CVS and builds automatically builds new artifacts from  
projects which, well, need to be built. I can quite easily get a list  
of these projects with the Ant task buildlist sorted so that, for  
example, if A depends on B, B gets built and published before A.  
During the buildlist processing, the script goes through each of the  
projects to see if there are any changes in CVS and if there are, the  
project gets built. This works fine except that there are also the  
dynamic "latest.integration" revisions in the ivy.xmls and the script  
doesn't know if some if the dynamic revisions have changed by just  
polling CVS.

I think that my script would work like I wanted it to if it would  
trigger a new build if the project has changed in CVS since the last  
build *or* if the dynamic revisions have changed. Therefore I'm now  
wondering what's the best way to check whether the dynamic revisions  
have changed. My script can get to the "static" ivy.xml of the  
previous build. It perhaps would work if the script executed  
"resolve", "delivered" a new static ivy.xml and then somehow diffed  
the static dependencies of the previous static ivy.xml to the new  
static ivy.xml to decide whether a new build should be triggered.

Are the some easy ways to check if the dependencies of the latest  
resolved ivy.xml differ from those of a previously resolved ivy.xml?  
Or you think my approach is way off and that I should do it some other  
way?


Mime
View raw message