Search code examples
testingmsbuildcontinuous-integrationteamcitydevelopment-environment

Continious Integration best practice for large project


My team has a Continuous Integration server(currently TeamCity but it doesn't matter) and large Visual Studio project which takes about 1 hour to complete full CI process after check in (build, run unit test, deploy on test server...).

Solution is splitted into 2 parts, Backend which is fully .NET stack projects (Windows Services, Web Projects etc.) and Frontend Single Page Application containing large amount of JavaScript and frontend things.

Continuous Integration build process taking 1 hour is about 90% of backend code, building, unit testing...

This is common scenario for large projects, and I want you to share your best practices and advice, on how to make "smart" check in trigger logic in a way, that each part of solution (Frontend, Backend) doesn't start build process for another.


Solution

  • In your case this

    common scenario for large projects

    can be handled better on the next step - Continuous delivery. Since all the actions you describe are a natural to it. About the part with

    Continuous Integration build process taking 1 hour is about 90% of backend code, building, unit testing.

    this article offers very good solution - parallel testing. Of course with the agreement that it depends from your Environments. The basic idea is that processor parallelism-like execution/degree will be very efficient if done properly. After analyzing all your goals and resources. If this automation is done right - the test effort will be significantly decreased.

    With the part of

    make "smart" check in trigger logic in a way, that each part of solution (Frontend, Backend) doesn't start build process for another

    and with the assumption in mind that

    Continuous Integration server(but it doesn't matter)

    a very good solution (of orchestrating Delivery pipelines with Jenkins) is described in details here. Maybe most valuable for you will be:

    and