Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

TFS 2008/2010 vs Jenkins for Continuous Integration

Does anyone have specific experiences with using TFS 2008/2010 AND Jenkins for Continuous Integration (CI)? We are trying to decide which CI server to use. Our team works exclusively in Microsoft .NET/Visual Studio 2010/C#. We have the following requirements:

  1. Automatically build our web project on every checkin.
  2. Run unit tests with each build.
  3. Automatically deploy green builds to development and/or test environments.
  4. Provide pretty reports.
  5. Provide build/deployment notifications via email.

I realize that installing a tool won't necessarily give us this functionality out-of-the-box and that we will have to integrate with other tools like MSBuild to achieve this.

I'm looking for specific features that Jenkins has that TFS 2008/2010 does not or vice versa. Also which is easier to maintain, use, etc.

like image 740
Doug Avatar asked Oct 05 '11 23:10

Doug


People also ask

Can Jenkins be used for Continuous Integration?

What is Jenkins? Jenkins is an open-source implementation of a Continuous Integration server written in Java. It works with multiple programming languages and can run on various platforms (Windows, Linux, and macOS). It is widely used as a CI (Continuous Integration) & CD (Continuous Delivery) tool.

Is TFS a Continuous Integration tool?

TFS is Microsoft's solution for continuous DevOps and has since been rebranded/renamed Azure DevOps Server. It has an in-built suite of tools that lets you achieve continuous integration and delivery with ease.

Can we use Jenkins with TFS?

A Jenkins build can be triggered when code is checked into TFS with TFVC as the code repository. In this blog, I am showcasing the ability of using TFS Version Control of a team project setup in VSO for Jenkins build system.

What is Jenkins Continuous Integration environment?

Jenkins is a platform for creating a Continuous Integration/Continuous Delivery (CI/CD) environment. The system offers many different tools, languages, and automation tasks to aid in pipeline creation when developing and deploying programs.


2 Answers

I would highly recommend using Jenkins - it will do all of your requirements out of the box apart from possibly #3, but if you can script your deployments then it can do that as well.

Here are some links to help you get your builds up and running:

Blog about doing .NET builds in Jenkins

Jenkins Windows installers

Installing the Jenkins master and slaves as Windows services

Disclaimer: I have no experience with TFS, but I think open solutions are nearly always more flexible and extensible (and cheaper !) than proprietary products.

like image 189
gareth_bowles Avatar answered Sep 18 '22 08:09

gareth_bowles


Late to this game, but I have used both TFS 2010 and Jenkins for CI. TFS 2010 has minimum set of CI tools in it. However, when you want to create a CI pipeline, it's a completely different story while Jenkins can easily create the pipeline.

If you are looking at only CI for one build either one should work. However, when it comes to the entire pipeline, Jenkins is way to go. With TFS it can be done, but Jenkins is better choice.

Here's quick bullet points:

TFS:

  • With a build definition you can compile, execute tests, return changeset/workitems, send an email when a build is broken

  • natural integration with visual studio

  • extremely hard to create CI pipeline. Requires custom handler and extensive workflow work. Not as intuitive as creating a build definition.

  • Because of the 3rd bullet, it's not easy to maintain/customize/scale CI pipeline

Jenkins:

  • Need to create a msbuild config file for CI, which is not much pain comparing to creating CI pipeline using TFS. However, TFS gives better/easier tool to create a build definition. however, it is not bad creating config file for msbuild for a project.

  • Creating a CI pipeline is very easy. Just chain them using upstream/downstream jenkins job trigger and passing an artifact from previous job.

  • Since Jenkins is very flexible, it is easy to create a jenkins plugin to meet your own needs and provide it to opensource community :)

In summary, if you need complete automated build, test, and deployment system go with Jenkins. If you just need only build and test, TFS might give you an edge over Jenkins.

like image 27
Shane Avatar answered Sep 22 '22 08:09

Shane