Continuous Integration and Continuous Delivery (CI / CD) Pipeline

 In previous post, I mentioned a bit about CI/CD. Now, I will try to explain detailly about CI/CD pipeline that is main skeleton of DevOps approach. Developers and IT operation teams work together to deliver the software during CI/CD pipeline steps. 

The main benefit of CI/Cd pipeline, automation of software releases. Other benefits are reduced deployment time, decreased operaiton costs, continuous feedback ann monitoring so early error detection,  enhanced reliablity and reduced downtime, increased collaboration between teams.

Let's detail of CI / CD pipeline steps a bit more; 


Continuous Integration



  • Plan:  When we are in a process of developing a software in a company, probably this is a part of a project or IT service (change or incident).  Let's suppose Agile project management. (for getting deep information about agile approach, please visit Scrum Website) For project, Scrum Master sets sprint plan. At the end of the sprint, DevOps teams must deliver a "value" (like a working part of  a software)

  • Code: This step includes code creation, modification and application lifecycle management for software asset with version control. DevOps teams could use any of toolset recording to company architecture. (Microsoft Technologies, Open Source Technologies )
Some CI Tools

  • Build: This step is automated build and integration of the entire application. When developer finish the task, merges the code to main branch. Before merge operation, I strongly advice to code review and approval. This will increase code quality and prevent possible errors. In approval step senior developer or team leader could review and approve or back to developer to improve code.

  • Test: After reviewed and built code, unit tests and static code analysis should be run. It will be better if developer write test code. Writing test code will provide automation for unit test process. Othervise, every tests will be run manually by tester. One of the important part of this process is static code analysis. In this step, I prefer to use a static code anayse tool like SonarQube, GitLab etc. After all tests, developer must fix the bugs and vulnerabilities.


Continuous Delivery


The main aim of Continuous Delivery is to deliver packaged artifact to production environment. Continuous Delivery automates the entire delivery process, including the deployment process. This process can include provisioning infrastructure, managing changes, deploying artifacts, validating and tracking those changes. Continuous Delivery enables automatic delivery of applications to selected infrastructure environments.

You should create on automatic CI/CD pipeline. If you don't prepare a pipeline and make all steps manually, it takes long time to finish and it will be prone to errrors. 

A good and effective pipeline consists these stages;

  • Build and Test current version of code (CI)
  • An artifact that is ready and packaged for deployment (CD)
  • Deploying the application to a server automatically  (Continuous Distribution)
Most frequently used CI / CD tools;

  • Jenkins
  • Azure DevOps
  • GitLab
  • CircleCI
  • Jetbrains TeamCity
  • Atlassian Bamboo
  • CodeShip
  • Semaphore

Comments

Popular Posts

Main Topics of DevOps

What is DevSecOps?