I'm also new here - but possibly facing similar problems (C#).  I'm not sure 
how exactly you expect the dependencies to be "handled", but I thought I would 
post my opinion.

I am going for your option B "one job for each project?"

My current plan is to add "build other project" "post build tasks" to jobs that 
are depended upon. If I understand correctly, by doing this I can "Block build 
when upstream project is building", and "Block build when downstream project is 
building".  Since I want immediate feedback, regardless of what is happening 
elsewhere, I'm NOT going to use these.  Maybe you want to...

I will also use the Copy artifacts plugin for projects that have dependencies 
to use the last successfull build from the upstream project.

Below is a sample setup with some possible problems.

Job A (triggered by a code checkin to repo somerepo/A,with with post build task 
to to run Job B)
Job B (triggered by a code checkin to repo someotherrepo/B AND has a dependency 
on Job A)

Problem 1
Scenario A
Two different developers check in changes simultanuously to the two different 
repo's.
Since the changes do not depend on one another, both jobs should be allowed to 
run simultanuously (job B can use the last successful build of job A's 
artefacts).  When Job A is done, the post build task will run Job B a second 
time.

Scenario B
A single developer checks in changes to both repos at the same time - the 
changes depend on each other.
The jobs will be run as described in Scenario A  - which causes Job B to fail.  
The second run of Job B should fix this.

I think scenario B will not happen often - and I can accept a failed build in 
this case.

Is this the type of "handling" you are asking about?

Reply via email to