Easy TeamCity Installation with Docker

.

TeamCity from JetBrains is an easy-to-use and powerful continuous integration system. It is a commercial product, but there is a special zero-cost license for small projects and FOSS applications. While installing TeamCity is relatively easy, its setup is further simplified via the use of Docker. Like many other state-of-art continuous integration systems, TeamCity adopts the… Read more »

Build Agent: Template vs Provisioning

.

For an automated build system, a typical configuration involves the separation between the build server and the build agents (some systems call it master-slave or coordinator-runner). Such a configuration allows any addition or removal of new build agents, perhaps to improve the build performance, without causing too much disruption. When it is time to spawn… Read more »

Great Teams Make History

.

The Spurs just recently won the 2014 NBA Finals with a series of convincing games. Most importantly however, they demonstrated the amazing traits of unselfishness and teamwork. It is not about getting the individual fame and glory, it is all about working together towards the common goal. Time and time again we witnessed the excellent… Read more »

The Flying Car Problem

.

Many free/open-source projects often suffer from a very specific feedback where it is assumed that a certain feature will not be implemented because of a philosophical reason. It is what I called as the "flying car" problem. As an illustration, with a lot of users and very few contributors, PhantomJS was bound to have that… Read more »

A Maturity Model for Build Automation

.

How does your engineering organization build and deliver products to its customers? Similar to the well-known capability maturity model, the maturity level of a build automation system falls into one of the following: chaotic, repeatable, defined, managed, or optimized. Let’s take a look at the differences in these levels for a popular project, PhantomJS. At… Read more »

Fast-Forward Git Merge

.

Merging a branch is a pretty common operation when using Git. In some circumstances, Git by default will try to merge a branch in a fast-forward mode. How is this different with a merge without fast-forwarding? Let us assume that I created a topic branch named speedup from the current master. After working on this… Read more »