Nowadays, during software development, the developer team has to integrate their finished code segments more often to eliminate errors in an early design phase, in order to avoid the incorrect development ways which can threaten the schedule of a project. This new approach in software development is called Continuous Integration (CI).
The essence of CI is to run the tests for the code changes -which are delivered by the developers at least once a day- immediately after the delivery, so if an error is present in the code, it is revealed only after a couple of hours. As a consequent, the CI’s main disadvantage is the necessity for more comprehensive documentation and monitoring, especially in the case of a large project.
My task was to design and implement a system which can store the information about the delivery, and from this it can determinate the content of the new build. The received data is stored in a MySQL database, and MySQL based stored procedures are responsible for the insert.
Besides the database and the stored procedures, I created an interface to reach the database from the softwares used by the developers. The frame is a script written in PHP language, which can call different stored procedures from the given parameters. The last step was to create a solution for the automation of the stored procedures. To create this I had to write several scripts as an expansion for two development environments used by the developers. In order to enable the storage of the main information about a code change in the database, a group of scripts were written for the GIT version control system. In addition, I have written another group for the Jenkins automation interface.
This interface already has some automation processes, like the building of the new software version or run the automated tests, so I extended these processes to be able to store their results in the database.
The system helped to increase the transparency within the development flow which is the base of the lean and agile development furthermore it reduced heavily the need of manual and error prone administration work.