CI/CD – what is a difference between them

Continuous Integration and Continuous Delivery/Continuous Deployment are both practices in software development that aim to automate the process of integrating and deploying code changes, but…

they focus on different stages of the development lifecycle.

  1. Continuous Integration (CI):
    CI is the practice of automatically integrating code changes from multiple developers into a shared repository several times a day.
    Every time a developer pushes code changes, the system automatically:
    – Build the project,
    – Run automated tests to check if the new code works as expected,
    – Checks for code quality.

    Goals of CI:
    – Detect issues early in the development process,
    – Ensure that the new code doesn’t break the existing system,
    – Automate the testing process.

    Example:
    Developers commit code to a shared repository (like GitHub). A CI tool (e.g., Jenkins, Travis CI) automatically tests and builds the project, alerting developers if something breaks.
  2. Continuous Delivery (CD):
    CD is the next step after CI.
    It ensures that the code is always in a deployable state and that every change can be deployed to production at any time.

    This process involves:
    – Automatically pushing tested code to a staging environment,
    – Preparing the application for a production release, but a human may still approve or trigger the final deployment to production.
  1. Continuous Deployment (CD):
    Continuous Deployment is a more advanced step where every change that passes the automated tests is automatically deployed to production without any manual intervention.

    Goals of CD:
    – Continuous Delivery: Automate the release process so that code is always ready for deployment.
    – Continuous Deployment: Fully automate the process, deploying to production as soon as the code passes all tests.

What are the main differences between CI and CD?

CI:
– Focuses on merging and testing code frequently to detect bugs early,
– Automates testing and integration.

CD:
– Ensures that the code is always in a deployable state and ready to be released after manual approval.
– Automates the entire deployment process, deploying changes to production automatically without manual approval,
– Prepares code for deployment but may require manual release,
– Automates the entire release process directly to production.

Related posts