ant-ivy-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Klaas Prause>
Subject AW: Finding dependent projects
Date Tue, 03 Nov 2009 08:29:04 GMT

I don't know if this is helpful, but here is what we did to trigger builds preventing a build
storm with nearly infinite rebuilds.

you don't like "build storms" you should base your triggers on the old CruiseControl plugin
Ivycruise or something like this. It does the triggering roughly in the following way:
1. check all projects if the DIRECTLY depend on build project, no transitive dependencies
for triggering
2. use the ivy feature to order all depend builds, this results in a list where the projects
that have most dependencies on other projects are at the end.

Example (x -> y, x depends on y):
A -> B -> C
D -> C
B -> D
E -> C

1. C is build.
2. B, D and E will be triggered
3. sort projects so that least depend projects come first: E, D, B, or D, E, B

After E is build it triggers B and no build storm occurs. If you have a lot of build queue
it could happen that B is build several times.

Regards Klaas

-----Urspr√ľngliche Nachricht-----
Von: Craig Setera [] 
Gesendet: Montag, 2. November 2009 22:07
Betreff: Re: Finding dependent projects

Hmm... That doesn't sound really appealing.  We are already really 
fighting with time to build.  I'm still not convinced we don't have some 
serious issues related to caching and TTL, but I haven't been able to 
pin it down.  But we are definitely spending WAY more time doing Ivy 
resolution than I would like to see and I don't entirely know why that 
is.  In my mind, Ivy is a very simple set of tools that can be amazingly 
difficult to use well.  Getting it working isn't bad... getting it 
working well seems to be alluding me.

On 11/2/09 3:01 PM, Joshua Tharp wrote:
> No worries. I've been using Hudson and the plugin for several months. My
> only complaint is that a module build can kick off a "build storm" as all
> the downstream modules get scheduled, and then if any of those modules are
> in turn dependencies, many modules can get placed back on the queue. If you
> don't mind your build numbers increasing rather rapidly, and the build
> machine cycles aren't in high demand otherwise, then it is a pretty good
> solution.
> On Mon, Nov 2, 2009 at 12:57 PM, Craig Setera<>  wrote:
>> Thanks.  I've been picking up some of our build infrastructure, so I
>> apologize for not having a good background on all of this.
>> On 11/2/09 2:54 PM, Joshua Tharp wrote:
>>> Have you looked at the Ivy plugin for Hudson? It does that already.
>>> On Mon, Nov 2, 2009 at 12:51 PM, Craig Setera<>   wrote:
>>>> Has anyone used Ivy to map in reverse to find the modules that are
>>>> dependent on a particular module?  Does anyone have any suggestions in
>>>> this
>>>> regard?  What I'd like to be able to do is trigger a build of all
>>>> dependent
>>>> modules (in Hudson) when a module is changed to avoid things like
>>>> IncompatibleClassChangeError's from occurring.
>>>> Any suggestions appreciated.
>>>> Thanks,
>>>> Craig

View raw message