What is CI/CD
In simplest terms, its about automating most of your post development tasks to reduce human errors. CI stands for Continuous Integrations, while CD stands for Continuous Delivery. While both of these usually used together, there are implementations that you can use one of this, depends on your requirement.
A step further would be the Continuous Deployment.
Continuous integration mostly focuses around automated tests to make sure that all the changes you or your developers does on the code base, are validated using automated tests, before/when the changes are merged in to the main branch. It’s good practice to merge the changes in to a main branch (ex: develop) branch which holds all the pieces together for the next release, and validate them using tests. This can reduce the mess you will have to face at the release date when all the changes are merged in at the last minute.
Once you have a working CI process in place to make sure the changes are validated before merging in, you can setup a continuous delivery process to deliver those changes to your production servers from a push of a button. This might require you to modify your application workflow to support deploying without having to upload manually by a developer. Which can reduce many issues we face when pushing your updates to live servers.
This is the ultimate goal we could achieve ones we have all the necessary processes in place and ones your developers are familiar with the workflow. When your developers merge in there changes, the comprehensive tests will make sure the changes are not breaking any existing code or features. If the tests are passing, CD will deploy the changes to your servers without having to have last minute release issues. Your changes will be live as soon as each update is verified so you can quickly get customer feedback or easily debug if there are any issues.
Continuous Deployment is like Continuous Developer, except you don't have to press a button or run a command. It will happen automatically ones the test cases are passed.
Benefits of having a CI/CD
There are many number of benefits you can have by having a proper CI/CD process. As a start, it will increase the quality of your code, the development process of your developers and your company since everything has to be done as per the standards, in order to support the test cases and the continuous integration process.
It will drastically reduce the issues you face when merging changes, issues you or your developers might face when trying to upload the modifications manually to the servers. It can also reduce the other complexities you will have on a release day. if the Continuous deployments are configured, you don’t have to have a release day.