Continuous integration, delivery, deployment, and testing explained