09 December 2015

Introduction to Continuous Integration and Team City

Continuous Integration

Continuous Integration is a development practice that requires developers to integrate code into a shared repository on a regular basis (at least daily). Each integration process is verified by an automated build. Automated build may also include automated unit testing, code analysis etc. Automated build may be followed by automated deployment as well.

Advantages of Continuous Integration 

  • Takes code from central repository for build
  • Helps in detecting integration errors early & easily.
  • Leads to faster and more frequent integration.
  • Improves project management confidence.
  • Prevents last minute integration problems.


Disadvantages of Continuous Integration 
  • Extra cost requirement
  • Extra time/effort requirement

TeamCity:

TeamCity is Continuous Integration (CI) server from JetBrains. It provides all the features of Continuous Integration. It is available for Windows, Mac OS & Linux. 

Features of TeamCity:

  • Language & Platform support - It supports various language platform projects. E.g. – Java, .NET, Ruby, Xcode, C++, Python, PHP etc.
  • Integration with Source control systems - It supports various source control repositories.  E.g. – TFS, VSS, ClearCase, Subversion, Perforce, CVS etc.
  • Integration with build systems - It supports various build systems. E.g. – Java (Ant, Maven, Gradle), .NET (MSBuild, PowerShell, Nant), Ruby (Rake with RVM, Bundler, Ruby SDK).
  • Central Administration web console - Team city provides web based central administration console. It can be used for various activities like - administration, configuration & maintenance, managing projects & build configurations, Managing user accounts, groups & permissions, managing build agents, viewing various reports related to server etc.
  • Multiple build agents - Team city supports multiple build agents. Each build agent can run a build script. Hence TeamCity can run multiple parallel builds. Build jobs can be queued on build agents. The jobs will be executed once build agent is free. 
  • On the fly build progress reporting - TeamCity reports build progress (errors, warning, informational messages) as build progresses. Build progress is available on both web administration console and in IDEs. TeamCity alerts about failed tests immediately. 
  • Automated Unit Testing - TeamCity automatically runs unit test during build. The build fails if any test fails. Failed tests are highlighted in build results. Notifications can be sent for failed tests. Failed tests can also be assigned to specific developers leading to easier test management. Unit testing history and statistics is stored and available for analysis.
  • Code quality tracking – TeamCity provides various features for code quality tracking. E.g. – Duplicate code analysis, Static code analysis, Code coverage, Code quality reports etc.
  • Plugins – TeamCity supports plugins for extensibility. Over 100 ready to use plugins are freely available on TeamCity site. These plugins help in achieving functionalities which are not available out of the box. Users can develop their own plugins for any custom needs.

References and Suggested Readings:


No comments: