Continuous integration (CI) is the practice of regularly merging code changes into a shared repository. With CI, developers merge their code changes daily, which helps prevent integration issues. Automated unit tests are run on the merged code to catch any errors or failures. If all tests pass, the changes are committed to the main codebase. As code is built on the CI server, releases are automatically deployed to test, staging, and production environments on a scheduled basis. The goals of CI are to frequently integrate changes, catch errors early, and automate testing and deployments.