CI/CD refers to the automation of software development process and deployment. CI/CD helps optimize and speed up the integration phase, minimizes the lengthy wait for the end-users to get the finished products.
What is CI
What does CI stand for and what it does?
CI stands for Continuous Integration. This practice requires that team members frequently and continuously update and integrate their work together. For each integration, the system itself can detect errors as soon as it pops up. Using CI can mitigate most common issues caused in integration, helps boost the development process and timeliness. The idea of CI practice in development process is:
- Periodically, developers will commit their code to the repository
- CI server will continuously monitor the repository and detect if any change is made. If there are changes, CI server will automatically build and run unit tests, integration tests. Afterward, CI server will respond to team members about the result of last integration. This iteration will repeat indefinitely as it come back to waiting state for any changes in the repository.
How about CD(s)?
What role does CD play in this approach?
If CI is responsible for automation of integration and testing, CD practice aims for higher purpose. CD stands for continuous delivery. Similarly to CI, CD promotes the continuousness in the project operation. The tests implement in this stage can be UI test, integration test, API test, etc. CD uses Deployment Pipeline to delegate the whole delivery process into stages. The requirements of every stage differ to validate the quality of the features or the product itself.
How CI/CD works in software development
The overall CI/CD practice will go through 3 main actions: Build – Test – Merge. This process happens iteratively, continuously and it helps development teams save a lot of time
Pros & Cons
- To keep the testing happen continuously, we must integrate CI/CD within the SDLC (Software Development Life Cycle). In the recent years, CI/CD has become a common practice in software development, playing a key part to harmonize the stages within the cycle: development, testing, integration, delivery, deployment. It is bridging the gap more than ever between the development and the production process.
- Pros:
- By automating monitoring and integrating continuously, CI/CD allows project team to be informed of and fix errors as soon as the system spots it, help mitigate minuscule and unwanted risks. Tedious daily tasks are also reduced with the help of building, testing automation. The CI/CD allow the facilitation of deployment, implementation of software at any point, any time in the project.
- Code quality enhancement: with the automation of testing set in advance in the CI/CD tools, developers have to follows a set of rules from the first lines of code, which ensures the consistency of code quality.
- Cons:
- To exploit the use of CI/CD, developers have to constantly learn and catch up with CI/CD tools new update/improvement. The CI/CD systems are known to be complex and really hard to utilize.
- CI/CD systems are costly and not compatible to every language/framework/model.
- CI/CD tools are third-party service. Thus, if the service encounters a problem, a crash or is cancelled, it can defer the whole project.
CI/CD tools & how to pick the right one?
There are numerous CI/CD tools to pick from and it might be a hassle to choose the right one for your team. So, how to decide what’s to go for?
- First thing first, it has to adapt with the project requirement. Different tools may offer you with different features. There might not be a tool to satisfy all your need but the right one is the one that satisfy to the most crucial requirements.
- Accessibility: CI/CD are known for its complexity. If a tool is creating more roadblocks for your team, then you should not go for it
- Popularity: consider the more popular ones with large community first, so you can easily seek for support and guidance
- Budget: the pricing is one thing to consider. If the cost for the system take half of your whole project expenses, what’s the point going for it?
Some of the best known providers are: GitLab, Google Cloud Build, Circle CI, Bitrise, etc. Consider all the elements above when you decide to apply CI/CD in your software development. Make it a promoter, not a burden to your project
See more of our success stories from applying CI/CD practice!