Module dependencies

Let's say I have a project which consists of 10 modules. How does TeamCity support this?

I could create one "Project" which contains all the modules. In this case, a change in any of the modules would trigger a rebuild and test case execution for all the modules which does not make sense. On the other hand, I could create each module as a separate project. In this case, the rebuild and tests would be triggered only when that specific module has changed. However, in this scenario would not be able to do the rebuild on the modules that depend on the changed module.

I don't know if I'm missing something here, but what I'm looking for is some way of defining dependencies between modules. Is this supported somehow by TeamCity?

As a related question, does the plugin architecture support defining custom build triggers? If so, I could implement custom triggers, which would detect updates in other modules.

1 comment
Comment actions Permalink

Markus Halttunen wrote:

Let's say I have a project which consists of 10 modules. How does TeamCity support this?

I could create one "Project" which contains all the modules. In this case, a change in any of the modules would trigger a rebuild and test case execution for all the modules which does not make sense. On the other hand, I could create each module as a separate project. In this case, the rebuild and tests would be triggered only when that specific module has changed. However, in this scenario would not be able to do the rebuild on the modules that depend on the changed module.

I don't know if I'm missing something here, but what I'm looking for is some way of defining dependencies between modules. Is this supported somehow by TeamCity?


Dependent build feature is planned for Agra:
http://www.jetbrains.net/jira/browse/TW-669

As a related question, does the plugin architecture support defining custom build triggers? If so, I could implement custom triggers, which would detect updates in other modules.


Yes, plugin architecture allows to write a listener which includes "buildFinished" event
and allows to trigger a build for any build configuration. So that's quite possible.

You can package your extension as a jar file and place is to webapps/ROOT/WEB-INF/lib
directory of TeamCity.

Please see http://www.jetbrains.net/confluence/display/TW/Plugin+Development
This page is really short yet, but it provides important information for your task.
We plan to update the document gradually starting from the next week.

Regards,
KIR


--
Kirill Maximov
Software Developer
JetBrains, Inc.
http://www.jetbrains.com
"Develop with pleasure!"

0

Please sign in to leave a comment.