So, you’re getting ready to install a continuous integration (CI) server for a .NET project, you’ve done your research and now you want to know: Which is better for .NET software development, TeamCity or Jenkins? Let’s start at the beginning… The CI Server At the heart of CI is the tool and technology of the CI […]
So, you’re getting ready to install a continuous integration (CI) server for a .NET project, you’ve done your research and now you want to know: Which is better for .NET software development, TeamCity or Jenkins?
Let’s start at the beginning…
At the heart of CI is the tool and technology of the CI server. The CI server is an application, usually running in the background as a Window service, which initiates, executes, and reports on all the processes of the CI lifecycle.
The CI server provides key capabilities such as:
There are many CI servers available, however, TeamCity and Jenkins are two widely-used CI servers, both of which are worth evaluating.
Jenkins is a Java-based CI server package. It is commonly used for Java projects but is suited for .NET projects because Jenkins can work with many common .NET version control systems, can run MSBuild scripts, and has a very active plug-in development community. In general, much of what any CI server does is not .NET specific. The primary component of Jenkins is the server, which runs within a Java servlet container, such as Apache Tomcat.
Jenkins is easy to install and use; the fact that it is Java-based should not represent an impediment to .NET development shops. Jenkins provides an impressive browser-hosted project management dashboard.
For those familiar with using Jenkins for Java development, the advantage is in using a familiar technology.
Some of the reasons to evaluate and choose Jenkins include:
TeamCity is also a Java-based CI server package. The TeamCity installation and configuration is quick and easy. The fact that it is Java-based should not be an impediment to .NET development shops. The TeamCity server is a primary component, but the browser-hosted interface serves as the primary way to administer TeamCity users, agents, projects, and build configurations.
The TeamCity browser-hosted dashboard is superb. It provides project status and reporting information suitable for a broad range of users and project stakeholders. It provides build progress, drill down detail, and history information on the projects and configurations.
With TeamCity, there is a system tray utility to provide feedback on build status and progress. The tray utility is useful so build notifications are received in the tray instead of by email. The TeamCity tray application notifies on events such as whether the most recent build was successful or failed.
There are a lot of good reasons to choose TeamCity. The product is very well documented and there are a lot of examples and tutorials available. Out on the Internet, there are many postings ranging from setting up basic CI with TeamCity to advanced topics such as using TeamCity’s built-in NUnit test runner.
Some other reasons to choose TeamCity include:
Note that you can run as many instances of Professional Edition Server as needed. Larger organizations may require the purchase of the Enterprise Server version.
Often times when a client asks for my recommendation I recommend TeamCity. There are many important .NET tools integrated and included with TeamCity, such as code coverage analysis, several .NET testing frameworks, and static code analysis. In fact, there are so many of these products included in the free Professional Server version that it makes setup very straightforward and you can expect to accomplish more in a shorter period of time.
Note: Jenkins was previously the Hudson CI server. After Oracle’s acquisition of Sun, the source code was forked and Oracle continues development under the Hudson name.
Source: Stephen Ritchie, Pro .NET Best Practices (New York: Apress, 2011). Excerpted with permission of the author.
.Net Core 2.1 was announced recently by Microsoft along with corresponding updates for ASP.Net Core...
In my previous post, I gave an overview of NancyFX, an open source and community...