Search This Blog

Wednesday 25 May 2016

Continuous Integration in software development

In software development process, continuous integration plays very important role. By the way what is continuous integration?
Imagine, we have a unit test, integration test and UAT environments. Every developer could modify everything in unit test environment. But no developer could modify the code or compile the code in higher environments like integration test or UAT. Therefore, any fix or code change tested in unit test environment needs to be elevated or promoted or deployed to higher environments before it could be tested in higher environment.  In order to elevate to next environment, we first check-in code to central repository or version control tool. So the code will be just in one repository that is version controlled. Then the code from version controlled repository will be build (i.e. compiling, linking, binding variables etc) and executables will be deployed to next higher environment or a workspace from where elevation happens. This process is called integration. If we are making changes and check-in code to version controlled repository very frequently and executables are regenerated continuously in next higher environment or a workspace, then it will become continuous integration. Continuous integration normally be automated so that as soon as check-in happens, build will start and executables will be deployed to next environment or workspace or server, from there elevation to next environment takes place.  
Continuous Integration process varies depending on type of code. The above explanation holds good if code is, for example, Java that need to be compiled, JAR or WAR need to be created. But if it is just unix shell scripting which do not require compiling, the continuous integration may be just copying the code from version control tool to designated environment therefore we may not see any continuous integration tools like Hudson or Jenkins playing any role in Unix Shell Scripting projects as it could be automated with simple scripting in native OS.


Assuming we are working in a JAVA project, the continuous integration could be implanted as below


No comments:

Post a Comment