NTT DATA Business Solutions
Thomas Ryegaard Christensen | november 10, 2022

Accelerate your software development by leveraging CI/CD


By building pipelines with Continuous Integration/Continuous Development you introduce automation for your development team.


Developing software is a complicated process and it can be difficult to make sure that it is of a high quality, non-complex and with good test coverage. However, this is very important if you want your code to be easily understandable and maintainable on a long-term basis, thereby reducing implementation costs for new features.  

For software developers, it is not uncommon to have a clear idea about when the development is done and writing unit-, integration- and UI tests are included in the development process, but execution of the tests are most likely a manual and tedious task in the code review process. Luckily, it is possible to automate this, and more, tedious tasks by introducing a pipeline, which is essentially a series of connected tasks and actions. Introducing such a pipeline is also referred to as Continuous Integration / Continuous Delivery (or in short CI/CD).  

By building pipelines with CI/CD you introduce automation for your development team. Automating tasks like static code check, execution of unit-, integration- or UI tests and even automating releases will allow your development team to focus on the code and build software faster.  

Development principles like shift-left and fail-fast are highly supported by CI/CD due to pipelines running early in the development cycle. Pipelines can advantageously be used as quality gates and should block merging of pull-requests if the pipeline execution fails. In other words, a pull-request is basically a developer letting the other developers on the team know that new code has been created, which the developer wants to add to the code base. However, if the pipeline fails, it will make sure to flag the pull-request with an error and prevent the pull-request from adding faulty code to the code base. The earlier you can identify bugs, the earlier and less costly you can fix them. Once the pipeline is successfully executed, the pull-requests can be processed immediately to make the new features available to the other developers on the team and thereby prevent developers from blocking each other. Thus, using pipelines as quality gates ensures high quality code and minimizes the risk of introducing bugs – especially when developing jointly with other developers.

Last but not least, automating releases with CI/CD tools will allow you to make them more reliable and secure as a pipeline will make sure that tasks are executed the same way for every release. When your release is automated, you can reduce release risk(s) even more by running smaller and more frequent releases, which in turn accelerates time-to-market for new features.  

A variety of tools are available for CI/CD. Repository hosting tools like Github, Bitbucket or Gitlab all offers pipeline functionality. If the pipeline requirements are not fully supported by the repository hosting tool there are also automation servers like Jenkins or Ansible. 

The journey towards successfully leveraging CI/CD needs to be planned and the tools need to be evaluated for each project. CI/CD pipeline setup can quickly become very complex, and it is critical to have simplicity in mind when building pipelines. Start small and then expand. Automate as much as possible but remember a pipeline need to be fast and reliable to bring most value. 


By Thomas Ryegaard Christensen