header pic

Continuous Integration Project

Building Mature Development Process by Adopting Continuous Integration Practices

Overview

The customer is an international company, delivering high-tech solutions to automotive manufacturers all over the globe. The company sought to refine its development processes in order both to shorten the release cycle and to enhance the product quality.

Challenge

There were some weak points in the customer’s development process that MERA had to cope with:

  • The code quality was not good enough, resulting in many broken builds. Furthermore, the product code lacked coding quality standards and unified coding style rules, which considerably complicated its maintenance.
  • The product build process was time-consuming because of entire product recompilation even in case of tiny changes in one component. This resulted in inefficient use of resources, unnecessary delays, and a waste of time.
  • Lack of automation in the process, which made the feedback loop slower.

Solution

To address and solve the challenges specified by the customer, the MERA team adopted Continuous Integration (CI) practices. CI introduction helped to automate most of the manual parts of the process. In addition, it allowed to get feedback faster and to react accordingly. All of this meets the best practices and makes the process more agile-like: to fail fast, to fix sooner, to succeed faster. The solution provided by MERA enables the customer to reduce expenses and to increase quality at the same time.

Besides that, the MERA team added static analysis to the CI pipeline to address code quality issues. This step provides instant feedback about a new change, enabling the return of the bad code back to developers for further improvements if necessary. To speed the build process up, MERA developed a solution that recompiles only changed components and their dependencies. Unchanged components are taken from the repository, containing compiled components, and added to the package without compilation. The MERA team has built the solution on top of Docker, Artifactory OSS, and cmake.

In the scope of the project, we automated the deployment process to make the process continuous and to decrease manual efforts. The product was installed in an automated way to the test environment and then automated smoke/sanity test suite was executed to verify if the new changes break the build and if it makes sense to push the build to the further automating and manual testing stages. MERA implemented automated smoke/sanity test suite using Python and Robot Framework.

Results

The solution implementation and the development process refinements allowed reducing build time significantly (up to 85% faster, depending on the number of changed components). In addition, the number of product issues tended to decrease according to the customer’s bug tracking metrics. Finally, once again based on the metrics, many issues are now caught at early stages. This helps the manual test team to focus on more thorough testing of the product features, rather than to find issues that could be caught sooner, hence increasing the customer’s product quality.

Technologies

  • Jenkins CI
  • C++
  • jFrog Artifactory OSS
  • Docker
  • Python / Robot Framework

This website uses cookies. If you continue to browse the site, we assume you are fine with how we use cookies on the web. Read more

This website uses cookies. Read more