April 27, 2016

298 Views

TeamCity: Intelligent CI server

When members of a software development team integrate their work too often or at least daily, leading to multiple integrations per day, where each integration is verified by an automated build to detect integration errors at the earliest, such a software development practice is termed as Continuous Integration. It has been observed by several teams that this approach has significantly reduced problems and allows the development of cohesive software more rapidly. These days, Continuous Integration tool is being used for various areas of product by almost every company.

Almost every company uses a continuous integration tool for various areas of their product.

TeamCity is a Java-based CI server package. Various companies are following agile methodology where continuous integration has an important role in software life cycle. Through TeamCity, we can achieve build automation as well as continuous integration. I find the TeamCity browser-hosted dashboard absolutely amazing. It is a server-based Web application. It is also very simple and easy to get familiar with. It provides build progress, drill down detail, and history information on the projects and configurations.

During probe migration I found some other things in TeamCity. For instance, you can set a time interval for probe building, meaning the build will trigger automatically after code commit. You can change the build priority from build queue. It also allows running multiple builds and tests under different platforms and environments simultaneously, that’s why we can say that TeamCity is an Intelligent CI server.

It provides two types of build feature:

  1. Developer Builds
  2. Release Builds

Developer builds have extra information (debugging symbols) regarding code binary, by which a user can debug the code during runtime. Release builds don’t have debugging symbols inside binary.

It also provides project status and reporting information, suitable for a broad range of users and project stakeholders. The product is very well documented and there are a lot of examples and tutorials available. We can compare TeamCity with other continuous integration tools like Jenkins.

TeamCity supports the version control systems like Subversion, Perforce, CVS, Git etc.

TeamCity is responsible for:

  1. Detecting source control changes
  2. Inspecting code and compiling the solution
  3. Triggering events, such as, on source code commits, on a schedule or in sequence
  4. Providing notification, status messages, and build logs
  5. Running unit tests
  6. Packaging the application ready for deployment
  1. Version Control: Detecting source control changes
  2. Compilation/Build: Compiling the code and build
  3. Test: Running unit test cases
  4. Package: Packaging the application for deployment

References

  1. https://www.jetbrains.com/teamcity/
  2. https://en.wikipedia.org/wiki/TeamCity