CI/CD

Created : July 20, 2020

  • CI/CD is a method to frequently deliver apps to customers by introducing automation into the stages of app development.
  • A solution to the problems integrating new code can cause (a.k.a integration hell).
  • Introduces ongoing automation and continuous monitoring throughout the lifecycle of apps, from integration and testing phases to delivery and deployment.
  • These connected practices are often referred to as a CI/CD pipeline
  • Supported by development and operations teams working together in an agile way.

CI = Continuous Integration

  • A coding philosophy and set of practices to build automated tests and commit small changes frequently
  • Each commit triggers an automated pipeline on a CI server, which can notify developers of any issues about integration.
  • Merge changes back to the main branch as often as possible.
  • Establish a consistent and automated way to build, package, and test applications.
  • Automate tests to check that the application is not broken whenever new commits are integrated into the main branch.

CD = Continuous Delivery / Continuous Deployment

Continuous Delivery

  • Automatically release to repository.

    • = A developer’s changes to an application are automatically bug tested and uploaded to a repository, where they can then be deployed to a live production environment by the operations team.
  • Automated testing + automated release process = deploy app at anytime by clicking on a button.

Continuous Deployment

  • Automatically deploy to production.
  • One step further than continuous delivery
  • Every change that passes all stages of production pipeline is released to customers.
  • If test fails, new changes will not deployed.
  • Can see changed code go live minutes after they're committed.
  • Deploy with small batches continuously, so there isn't a Release Day anymore.

CI is part of CD. Continuous Deployment is like Continuous Delivery, except that releases happen automatically.