views:

32

answers:

3

Can Hudson CI tool solve project dependencies others than trivial ones? For example, how can I set up scenario in which there are two independent modules (A, B) and module C dependent on A and B?

There's no way in my opinion:

  • "Build others project" doesn't guarantee that A, B are built before C
  • "Build after other projects are built" guarantee only "C is triggered after A or B" (A and B needed)
  • Join plugin can solve this if one has ~ 3 modules. If there are modules A1, ....., A100 and C1, ....., C100 then it is supposed to write 100 additional Join triggers and issue 100 additional rebuilds of B (in other words, every B's reverse dependency needs rebuild of B). So in case that Join triggers cannot be trivially XML hacked and nonsense rebuilds of unchanged B cannot be skipped (is this possible?) it is unpractical.

So is there some way or some standard workaround to achieve this?

A: 

I might be missing something, but your second option ought to work:

Build after other projects are built" guarantee only "C is triggered after A or B" (A and B needed)

This means that C will be built every time there are changes to either A or B. If A and B are truly independent of each other as you say, that satisfies all the dependencies.

gareth_bowles
Yes, you're right. If one SUPPOSES that A and B has been already build than every change to A triggers C's build, every B's change triggers C's build and in case of change to A and B there is C rebuilt for two times.
Yes, you're right. If one SUPPOSES that A and B has been already build than every change to A triggers C's build, every B's change triggers C's build and in case of change to A and B there is C rebuilt (likely) for two times.However, my paradigm was quite different, I haven't supposed these "incremental" builds. Rather I'm supposing build-server which obtains from time to time build-request (say one per 1-2 week(s)) and make whole system from ground up.I think I have to rethought these two cases....
A: 

Perhaps you can try using the Ivy plugin, which uses Apache Ivy to manage dependencies.

Bernard
Yes, I'm aware of that, but in my opinion this is adding one more trouble (Ivy), maybe two (Ivy + plugin).