Forgive my ignorance, but I'm having a difficult time finding an answer to this. We currently use TFS and a TFS Build server. I was looking at other build server options and was wondering if products like Jenkins and Teamcity serve the same purpose as TFS Build.


Basically, a build would be limited to:

  • Check out,
  • Compilation (or more generally, build, which includes more tasks, such as setting up proper configuration),
  • Unit testing,

while continuous integration will walk through the same three steps, plus:

  • Integration of the project within the larger system,
  • Integration testing,
  • (Eventually system testing).

Continuous delivery would add one additional step:

  • Packaging of the solution (in a form of an .msi file, a pip package, whatever).

Finally, continuous deployment will do all six steps and additionally:

  • The actual deployment of the solution in production.

In practice, there is no strict separation between build and continuous integration for many products. For instance, TFS build is hardly limited to the first three steps. It can perfectly well be configured to do the actual integration, the packaging and the deployment itself, making the terminology irrelevant in this case.

Jenkins is in fact a direct competitor of the build part of TFS. It has the same purpose, and works similarly.

  • This is exactly what I was looking for. Thanks for the response!
    – fortune
    May 29 '15 at 14:04
  • Wrong, Continuous Delivery also does the actual deployment, it just doesn't deploy it immediately.
    – user185486
    Dec 23 '16 at 17:58
  • @GlendGjermeni: Continuous Delivery makes the product ready to deploy by building the packages, but no, it doesn't deploy anything, neither immediately, nor after a period of time. Dec 23 '16 at 18:15
  • @ArseniMourzenko One of the points of continuous delivery as outlined by Martin Fowler (and almost everywhere else) is: 'You can perform push-button deployments of any version of the software to any environment on demand'. So clearly, it does deploy.
    – user185486
    Dec 23 '16 at 18:18
  • @GlendGjermeni: “You can perform push-button deployments” and “Deployments are done automatically without human intervention” are two different things—and this is exactly the distinction between Continuous Delivery and Continuous Deployment. Dec 23 '16 at 18:40

In short yes.

TFS is a broad term for the TFS suite of products that are bundled together, but its basically a version control system and a build server (TFS and TFS Build, if you like).

There are many competing systems, some are bundled together like TFS, some come separately. So a system that used, say, Subversion and Jenkins provides the same functionality as TFS and TFSBuild.

In many respects, the separates is better - you can pick and choose the one that works best for you. Jenkins for example is awesome, or you could pick Mercurial or git for your source control needs. You can then add other features such as a requirements management package, a Kanban workflow tool, a better bugtracker, or a document repository to the suite which you cannot easily do with TFS as it tries to lock you in to its way of doing things.

  • Keeping them separate makes a lot of sense. Thanks for the feedback!
    – fortune
    May 29 '15 at 14:04

Not the answer you're looking for? Browse other questions tagged or ask your own question.