Continuous Integration and Jenkins
Every developer that has been in the business long enough come across the continuous integration concept. Every team usually tweaks and adapts the process to their needs, but what is this concept? And what isJenkins?
Requirements Analysis -> Design -> Development -> Testing -> Maintenance
Traditionally, the SoftwareDevelopment Life Cycle follows the above diagram. Nowadays this is called a‘waterfall’ approach for SDLC.
Every part of the diagram has its own small domain. Every small domain has different approaches. Developers (or more likely the team manager or development manager) choose the approach that fits their needs and,more importantly, their business needs. That decision alters how the above diagram will be modified and used by a team.
In today’s software services, a common practice is to create small pieces of code that solve one problem and do that (and only that) very well. Such a practice isolates a software system into several small pieces, decreasing complexity for every small module, but increasing the need to test how all those small pieces fit next to each other in an isolated environment.This is a mere example of a huge number of different situations that need to be tested
, thus increasing the steps and requirements to be fulfilled before even beginning to build a piece of software.
The situations can be evaluated using tests (i.e. unit, integration test), code coverage or any other checks that need to happen at some point to build a software product. Automating these tasks is one of the reasons continuous integration software exists.
A good example of continuous integration is Jenkins(previously Hudson). Jenkins is a java built, multi-purpose continuous integration tool. Jenkins enables developers to build their projects using build systems (e.g. maven, gradle, ant) and include their respective tests with those systems. Since the idea of building a single system and including a single project on Jenkins would bring only a few benefits such as version control, auto-tagging or publishing; the inclusion of multiple projects and/or multiple parts of the same system (or sub-systems) is what makes continuous integration software greatly appreciated.
Jenkins can be deployed in practically any environment. As it is built using Java, it can be executed virtually in any modern OS, such as Windows, Mac or Linux.