I have written many posts about Continuous Integrations and implemented many projects with capability of Continuous Delivery. However multiple times got into discussion on what exactly is difference between Continuous Integration, Continuous Delivery and Continuous Deployment. As SFDX is new way to develop and deploy changes in Salesforce, just thought to post a small post on basic difference between these terms.
Continuous Integration is automated build scripts to detect changes in Source Code Management (SCM) like Git. Once the change is detected, source code would be deployed to common dedicated build server (Sandbox) to make sure build is not failing and all test classes and integration tests are running fine.
In most of projects, multiple developers works in different sandboxes. They will move their changes multiple times in a day to Git branch. On code change detection, SCM code would be built against dedicated build server. Once changes deployed, test classes and integration tests would automatically initiated to make sure latest code change in Git didn’t broke anything.
Continuous Delivery is Continuous Integration + Automated Acceptance Testing + Manual way/step to deploy to production.
Continuous Deployment is Continuous Integration + Automated Acceptance Testing + Automated deploy to production.