In continuous integration, what is the best way to handle external application dependencies?


In using our TeamCity Continuous Integration server we have uncovered some issues that we are unsure as to the best way to handle. Namely how to reference external applications that our application requires on the CI server.

This was initially uncovered with a dependency on Crystal Reports, so we went and installed Crystal Reports on the Server fixing the immediate problem. However as we move more applications over to the CI server we are finding more dependencies.

What is the best strategy here? Is it to continue installing the required applications on the Server?


Where possible make the external dependencies part of your build system. For instance check the installer in to your version control system and have a step that checks it out and runs it in silent mode (many installers support a mode with no user action sometimes using the commandline /s).

This way if you need to set up another build machine for a branch or just for new hardware everything is repeatable.