How to bundle or aggregate projects, and their status ?

Hi,

I am investigating if TeamCity is an option to Jenkins for us, and I am looking for the functionality the MultiJob plugin offers.

One use case is a project with several independant builds, for instance where only the build parameters differ:

Build 1: make ENABLE_X=1
Build 2: make ENABLE_X=1 ENABLE_Y=1
Build 3: make TARGET=abc
...

The code basis is considered healthy if and only if all builds are fine.

There are actually 2 aspects:
- the builds shall all be started when an "umbrella" projects is triggered (the builds can potentially run in parallel)
- the "umbrellla" project shall get the aggregated status of the statuses of all builds

This is among other things important to implement pre-merge tests, for instance with  Gerrit. The uploaded commit can be blessed (and merged) only if all builds are  passed.

Groupping all builds in one TeamCity project is not an option,  because I still want to see the invidual status, and be able to start a  specific build on demand.

Does TeamCity support this ? If yes, how ?

Thanks,

Olivier

4 comments
Comment actions Permalink

Hi Oliver

In TeamCity this concept is implemented with Snapshot Dependencies.
Multiple build configurations (=Jenkins jobs) can be linked together to form a build chain.
Please look at Build Dependencies Setup article in our documentation for details.

0
Comment actions Permalink

Hi Michael,

that looks indeed like what I am looking for. I will try it out, thanks !

Olivier

0
Comment actions Permalink

Hi Michael,

the triggering part is working as I want, but the aggregation of statuses doesn't: when a dependency is failing, the umbrella build is not started at all, there is just this special error message:

"Failed to start build  #6 on <agent>"

What I would like is to have the umbrella project failing too. First, it makes the feedback on the status consistent with the children (e.g. the red arrow). Secundly, it makes it possible to use the umbrella project as build set for pre-merge tests.

What's the best way to achieve this ?
I assume that a plugin would do it, but I was wondering if there is an easier solution.
Can the option "Run build even if dependency has failed" help somehow ?

Thanks in advance for your help.

Olivier

0
Comment actions Permalink

It looks like "Run build even if dependency has failed" does exactly what I want.

I didn't realize it during my testing because I forgot to set it for one of the depending builds. It's a bit a bit tedious when you have many of them. I have opened a ticket for this: TW-33638

0

Please sign in to leave a comment.