Continuous Integration is one of the twelve practices of Extreme Programming, applied during software development. It is a practice of merging the results of the development team’s work to the main repository. For modern e-commerce systems, it means a constant improvement of software and continuous development. Providing customers with new features and system updates more frequently is key to achieving competitive advantage.
Integration of subsequent code changes should occur at least once a day. Next, integrated versions of the code are covered by automatic tests, and then, after validation, they are implemented into the customer system. The main purpose of continuous integration is to increase team members’ efficiency because they have constant access to the current progress of work. CI also facilitates the prevention of possible errors. For customers, it means constant access to the current software version.
Process of Continuous Integration
All changes introduced to the repository by developers are tested automatically. First, unit tests are performed, that is, the correctness of code is checked. It is followed by code compilation process, the so called build, on which acceptance tests are performed. If errors are detected, the system immediately informs the relevant people assigned to the project. If the tests are successful, the changes are prepared for deployment and become candidates for introduction into the base version of the software.
The advantages of CI
Continuous integration has a lot of advantages. Firstly, the customer has always access to the latest version of the software. Secondly, the efficiency is increased by combining the development team’s work on specific projects, resulting in a significant saving of man-hours. CI also facilitates detection of possible errors and thus – quicker response to them. Also, when there is a need to withdraw changes previously made to the system, it ensures the security of the database.
Work on Continuous Integration is a part of a long-term vision of i-systems software development, which aims to systematically improve the quality of delivered solutions.