The Katalon Blog

What Is CI/CD? Continuous Integration & Delivery Explained

Written by Katalon Team | May 20, 2019 7:57:51 AM

CI/CD is the acronym for the combined practices of Continuous Integration (CI) and Continuous Delivery (CD). CI/CD practices are currently the most widely accepted choice to shorten software development and delivery cycle time.

In today’s ever-evolving landscape, one of the top challenges for software companies is quickly responding to market and customer demands. And CI/CD methodology emerged as the pivotal solution to such a challenge. Read on to find out more about CI/CD and how these practices are performed.

Learn CI/CD optimization by Katalon Academy free course

What is Continuous Integration?

Continuous Integration (CI) is a software development practice where developers frequently merge their code changes into a shared repository, usually several times a day. Each merge triggers an automated build and testing process to catch errors quickly, ensuring the codebase stays in a working state.

A CI pipeline typically involves the following tasks:

  • Detect changes in the source code repository (new commits appear)
  • Source code quality analysis
  • Build
  • Execute all unit tests
  • Execute all integration tests
  • Generate deployable artifacts
  • Report status

If one of the steps above fails:

  • Integration may stop or continue depending on defect severity and configuration
  • Results are notified to the team via email or chat system
  • The team fixes defects and commits again
  • Tasks are performed again

It’s like a regular health check for your project, making it easier to find and fix issues early while speeding up development.

What is Continuous Delivery?

Continuous delivery (CD) picks up where continuous integration ends. While CI is the process to build and test automatically, CD deploys all code changes in a build to the testing or staging environment.

CD makes it possible to release builds to the production environment when needed. Allowing the team to deploy at will, CD effectively reduces time to market.

Before deploying software to production, the CD process includes performing automated system testing, unit testing (including API testing and load testing), and integration testing.

The steps from CI to CD are usually completed automatically, including automated testing at the unit, integration, and system levels. As tests can fail at any level and environment, CI/CD must include a feedback channel to quickly report failures to developers.

Dependent on policies and processes defined by teams, developers may do the following with CI/CD:

Step 1: Before committing changes, developers check to see if the current build succeeded. If not, fix errors before committing new changes.

Step 2: If the current build succeeded, reset the workstation with the build’s configuration.

Step 3: Build and test locally to ensure the update does not break any functionality. If successful, commit new changes.

Step 4: Allow CI to complete with new changes.

Step 5: If the build fails, stop and fix errors on local workstations. Go back to Step 3.

Step 6: If the build passes, continue working on other items.

Read more: Continuous Delivery vs Continuous Deployment: A Comparison

CI/CD Workflow Pipeline

A CI/CD pipeline is a path for delivering a unit of change that starts from development to delivery, usually consists of the following main phases:

Phase 1: Commit   
When developers complete a change, they commit the change to the repository.

Phase 2: Build   
Source code from the repository is integrated into a build.

Phase 3: Automate tests   
Automated tests are run against the build. Test automation is an essential element of any CI/CD pipeline.

Phase 4: Deploy   
The built version is delivered to production.

Importance of Test Automation for CI/CD

Test automation is a crucial component of any CI/CD pipeline. The benefits of applying CI/CD cannot be realized if there is a lack of automated testing and a low level of test coverage. Teams need to perform automated testing at all levels including unit, integration, and system testing.

  • Unit test   
    Covers units of code such as methods, classes, and API services. Effective unit testing significantly increases test coverage for the whole system.
  • Integration test   
    Ensure modules and parts of the system work together smoothly.
  • System test   
    Runs on the entire system to simulate active users. The test environment should be as close to the production environment as possible.

Teams also need to apply automation testing for multiple testing types such as functionality, usability, performance, load, stress, and security.

Crucial Software for the CI/CD Pipeline

Many software tools are available to support implementing CI/CD practices. These CI/CD tools range from repository management such as Github and Bitbucket, Jenkins for build automation, and Selenium and Katalon Studio for test automation.

Katalon Studio provides a comprehensive set of features for API, Web, and mobile testing. It can be easily integrated into a CI/CD pipeline to handle unit (API services), integration, and system testing.

Conclusion

CI/CD are two DevOps best practices as they tackle the misalignment between developers and the operational team. With the presence of automation, developers can release changes and new features more frequently, while operation teams have better overall stability.

Your Automation Testing Journey Starts Here