-
Notifications
You must be signed in to change notification settings - Fork 0
Chapter I. CI Server as our the best deal
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.