Project summary
An important aspect of successful software product development is the correct movement of the team through the software development life cycle (SDLC). The SDLC defines the process that organizations use to create a software product from the inception of the idea to its release. The development process includes six main stages: planning, analysis, design, development and implementation, testing and integration, and system support. The last three stages can be greatly simplified by implementing CI/CD (Continuous Integration & Continuous Delivery – the concept of software continuous integration and delivery). This concept allows reducing time needed to find bugs, deliver software and makes it possible for developers to fully focus on developing a software product.
Thanks to the implementation of CI/CD, the software product is automatically built and tested after each change made in the code. It greatly simplifies the development process, since developers need to focus only on a specific commit (code change) instead of checking the entire source code and, as a result, the developer spends less time fixing bugs and has the opportunity to devote more time and attention directly to development.
When developing the customer’s software product, most of the actions were manual. The customer wanted to simplify this process, so our task was to set up and integrate CI/CD in the process of the customer’s existing software product development.
Today, there are many tools to accomplish this task. Jenkins was chosen for this purpose, since:
- It allows configuring all the necessary jobs and the conditions under which these jobs will be performed (for example, changes in the code are built and tested after each commit).
- It generates reports on specific changes in an extensive codebase.
- Using test execution reports developers can quickly understand and find bugs.
- Jenkins is very easy to set up and configure thanks to its intuitive user interface.
The following jobs were created and configured as part of CI/CD implementation:
- Build – runs automatically after each code change (commit to the repository), launches and checks all JUnit tests, and after the successful completion of tests builds the project, otherwise informs the developer about problems.
- Publish Release – after a successful build of the project, it increases the version of the project and publishes the created zip archive containing the current version of the software product to Nexus (a repository for storing artifacts).
- Deploy on server – gets the latest version number of the application, downloads it from Nexus and deploys all the necessary environment to run the customer’s software product on the application server.
The complete job set is shown in Figure 1.
As a result, our team designed and implemented the necessary set of Jenkins jobs on the customer’s server: assembling new changes in the code, release, rollback of changes in case of bugs, and deployment to the server. So, part of the processes that were previously performed manually and required constant participation of developers became automated. In addition, JazzTeam fully documented all the work performed, namely principles and cases when jobs are executed.
Technologies
Jenkins, Nexus, JUnit.
Project features
- CI/CD was implemented for the development process of the customer’s existing software product. It already had its own integration and delivery processes that were performed manually. A smooth transition was required.
- The customer wanted to simplify and speed up some of the processes, and therefore our team made every effort to conduct a detailed, complete analysis of the current processes on the customer’s existing project (development, integration, and support of the project) and clarify the requirements. As a result, jointly with the customer we created a statement of work for the implementation of CI/CD in the existing software project.
Project results
- A comprehensive analysis of current processes on the customer’s existing project was carried out. As a result, the statement of work was created. It contained a full description of the team’s step-by-step actions and was approved by the customer.
- CI/CD based on Jenkins was introduced in the customer’s software development process, which made it possible to reduce labor costs and time for bug fixing, build and delivery of the software product to the customer.
Company’s achievements during the project
- During the project, a typical diagram of the entire life cycle of the software product in Jenkins was implemented. It is shown in Fig.1, and can later be used on most projects.
- JazzTeam expanded its experience in CI/CD implementation and also trained customer representatives how to work with each of the jobs created.