Introduction to CI/CD

Learn what continuous integration and delivery/deployment are.

What is CI/CD all about?

The speed with which software releases need to happen these days calls for the need to automate and secure the whole software development lifecycle.

Continuous integration (CI) and continuous delivery/deployment (CD) are DevOps processes that help to automate the software release process in a way that guarantees more seamless deployments. They also save time and money for an organization.

Phases in a CI/CD pipeline

A CI/CD pipeline should guarantee that no single change introduced will break the existing codebase. A CI/CD pipeline usually contains a series of steps that need to take place sequentially for a successful software delivery.

The pipeline usually includes the following stages.

  • The build stage: This is where the source code and its dependencies are bundled. The primary purpose of the build stage is to package the application to be easily deployed to different environments.
  • The test stage: This is where automated test cases are executed to verify the correctness and behavior of the changes that are being introduced.
  • The release stage: This is where the built code is stored in a redistributed format in an artifact repository.
  • The deploy stage: This is where the build artifact is picked up and deployed to the required environment.
  • The monitor stage: This is the stage where the overall application performance is monitored using a dedicated interface.

CI/CD tools

CI/CD tools are categorized based on what role they play in the whole CI/CD process. They can be open-source or paid offerings by different cloud providers.

Some categories of CI/CD tools include the following:

  • Continuous integration tools: Jenkins, Bamboo
  • Dependency management tools: Nexus, Jfrog
  • Configuration management tools:Ansible, Puppet, Chef
  • Integrated development environments: Visual Studio Code, AWS Cloud9, Visual Studio, JetBrains IDEs
  • Issue tracking tools: Jira, Azure Board
  • Collaboration tools: Confluence
  • Testing tools: AntUnit, Cucumber, JMeter, SoapUI, Selenium
  • Version control systems: Git, SVN/Subversion, Perforce
  • Build tools: Ant, Rake, Maven

The version control system is at the heart of the CI/CD process. We’ll add things such as automated code quality tests tools, static code analysis tools, security checks tools, configuration management tools, and so on to the version control system.

Benefits of CI/CD

CI/CD allows teams to be more agile and efficient. It offers some of the following benefits:

  • Smaller code changes are possible.
  • Faults can be isolated easily.
  • There is a faster MTTR (mean time to recovery).
  • There is more reliability in the software development process.
  • Releases can happen faster.
  • Backlogs are reduced.
  • The end users get to enjoy new versions of the application without any disruption, because software updates happen without any downtime.
  • Teams can better collaborate in an efficient and transparent manner.
  • Every form of cost is reduced.