Skip to content

Chapter I. CI Server as our the best deal

oprilepin edited this page Oct 22, 2014 · 16 revisions

CI Server as our the best deal

So, on the market today CI servers for java-development has the following services:

Running along the line for each of these servers.

TeamCity is a product of the guys from JetBrains, that speaks of itself, which is only their IntelliJ IDEA. Right out of the box is support for three languages ​​(Java, .NET, Ruby), self-maven / ant + gradles, able to run under Mac / Linux / Windows (although at one time I had problems running under Windows). There are two editions: free (20 build configurations and 3 agents) and paid (you can take a trial license for 60 days). At this point already made ​​about 50 different plug-ins, all are in one place and simply put. The main chips:

  • Remote assembly and test commit (can test local version of the project from the IDE);
  • Grouping tests on the level of importance / risk;
  • Embedded analytics code (Sonar becomes not necessary);
  • Easy to work with the collected artifacts throughout history assemblies;
  • Integration with amazon ec2;
  • Amateur git / mercurial may collect directly on its branches;
  • And so forth.

Proceed to CruiseControl. At the time, killed a lot of time fighting with the first version of the server, so that the impression of it was not pretty. As time passed, there was a second version, which became considerably better. UI has changed for the better - there was a comfortable and working dashboard. There is support for .NET (CruiseControl.NET) and ruby (CruiseControl.rb). Plus, I somehow did not find much, but there are disadvantages:

  • through the web interface is difficult to add / view / ... and something else to do with the project;
  • poor integration with test tools;
  • problems with extensions (although the same is an extension to work with php).

My opinion - is a purely academic interest. We proceed to the Continuum. As well known manufacturer of the product - Apache, which means we are waiting for a great integration with maven. Additionally, the application has a nice web interface through which you can create and manage a project. The same advantage is the ease of setup. Has a standard set of functionality - distributed builds, different types of notifications, support for different types of repositories. Out of the box only works with java, and the plug-ins I have not seen hurt. In general, if you need a reliable tool - note the Continuum, a minimum of headaches when installing / setting, then the maximum benefit. And we finally got to Jenkins. At the moment, in my opinion, is one of the best CI server for java-developers.

As pause take a look at this comparison matrix of different CI-servers. Continue. I'm so positive I paint Jenkins because we have a corporate standard, but also because it is thanks to him, I was able to automate a number of pieces, and, in principle, to improve a number of things. Immediately advise you to read this one document, it contains 7 tips to optimize Jenkins, is useful. Couple general tips:

  • I advise you to put HTML publisher plugin, will be able to publish their own reports;
  • Sonar plugin set clear - we do not want the smell in the code;
  • If it is possible to integrate with bug tracker, do it.

Let's start with a simple. How to set up a project, I will not tell, you can read about here, just give advice and tell you about a couple of tricks:

  • The assembly can be set up not only for a particular node, but also to a group of nodes via regexp;
  • Use the assembly scheduled to build was available at the right moments (for example, before stand-up meeting);
  • Pump the always full version of the product and clean maven repository or any other medium, it will save you a lot of time;
  • For each project is better to have their own version of maven repository, otherwise there will be dependence;
  • All code analysis leave the share Sonar, so feel free to put a check-mark to use it;
  • Do not be afraid to have a lot of tasks to different branches and different configurations of assemblies, it will help you when the need arises, something to quickly test or check.

Clone this wiki locally