CI/CD

CI/CD (Source: [Synopsys](https://www.synopsys.com/glossary/what-is-cicd.html))
CI/CD (Source: Synopsys)

What is CI/CD?

  • A method to frequently deliver apps to customers by introducing automation into the stages of app development.
    • CI = Continuous Integration
    • CD = Continuous Delivery and Deployment
  • Introduces ongoing automation and continuous monitoring throughout the lifecycle of apps, from integration and testing phases to delivery and deployment.

Continuous Integration (CI)

  • An automation process for developers
    • New code changes to an app are regularly built, tested, and merged to a shared repository.
  • This process is automated to ensure that teams can build, test, and package their applications in a reliable and repeatable way.
  • Helps streamline code changes, thereby increasing time for developers to make changes and contribute to improved software.
  • A solution to the problem of having too many branches of an app in development at once that might conflict with each other.

Cotinuous Delivery and/or Deployment (CD)

  • Continuous delivery
    • The automated delivery of completed code to environments like testing and development.
      • I.e., a developer’s changes to an application are automatically bug tested and uploaded to a repository
    • Provides an automated and consistent way for code to be delivered to these environments.
  • Continuous deployment
    • Next step of continuous delivery
    • Every change that passes the automated tests is automatically placed in production, resulting in many production deployments.
    • Addresses the problem of overloading operations teams with manual processes that slow down app delivery
They are related concepts that sometimes get used interchangeably. Both are about automating further stages of the pipeline, but they’re sometimes used separately to illustrate just how much automation is happening.

Difference between CI and CD

CI is a set of practices performed as developers are writing code, and CD is a set of practices performed after the code is completed.

How CI/CD pipeline works?

The CI/CD pipeline works like an infinity loop:

CI/CD (Source: [Synopsys](https://www.synopsys.com/glossary/what-is-cicd.html))
CI/CD (Source: Synopsys)
  1. Developers write the code
  2. Build or compile the code
  3. Test the code for bugs
  4. Release the code if all tests are passed
  5. Deploy the change in production
  6. End users or customers operate the new change
  7. Project owner or project manager monitors and gets feedback
  8. Plan the next step based on the feedback
  9. Back to step 1: Write code based on the plan

Why is CI/CD Important?

  • Allows organizations to ship software quickly and efficiently.
  • Facilitates an effective process for getting products to market faster than ever before, continuously delivering code into production, and ensuring an ongoing flow of new features and bug fixes via the most efficient delivery method.

Benefit of CI/CD

  • Automated testing enables continuous delivery, which ensures software quality and security and increases the profitability of code in production.
  • CI/CD pipelines enable a much shorter time to market for new product features, creating happier customers and lowering strain on development.
  • The great increase in overall speed of delivery enabled by CI/CD pipelines improves an organization’s competitive edge.
  • Automation frees team members to focus on what they do best, yielding the best end products.
  • Organizations with a successful CI/CD pipeline can attract great talent. By moving away from traditional waterfall methods, engineers and developers are no longer bogged down with repetitive activities that are often highly dependent on the completion of other tasks.

##Reference

  • What is CI/CD?

  • CICD

  • Video tutorials

    • DevOps CI/CD Explained in 100 Seconds

    • CI/CD Explained | How DevOps Use Pipelines for Automation

​