Source:: https://www.youtube.com/watch?v=0ivcSjpUzl4 Author:: [[Viktor Farcic]] <iframe width="560" height="315" src="https://www.youtube.com/embed/0ivcSjpUzl4" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> # [Continuous integration, delivery, deployment, and testing explained](https://www.youtube.com/watch?v=0ivcSjpUzl4) ## [0:46](https://www.youtube.com/watch?v=0ivcSjpUzl4&t=46) Why use Continuous integration? 1. Avoid conflicts ## [0:56](https://www.youtube.com/watch?v=0ivcSjpUzl4&t=56) 2. Discover issues sooner. ## [1:32](https://www.youtube.com/watch?v=0ivcSjpUzl4&t=92) CI is merging everyone's work into mainline frequently. ## [1:50](https://www.youtube.com/watch?v=0ivcSjpUzl4&t=110) Frequent = once or more times a day ## [2:45](https://www.youtube.com/watch?v=0ivcSjpUzl4&t=165) Important feature: automation, because continuous integration doesn't happen manually. ## [3:59](https://www.youtube.com/watch?v=0ivcSjpUzl4&t=239) CI can't be fully automated because there are also manual processes that are part of it, such as manual testing. So it's only partial automation. ## [4:31](https://www.youtube.com/watch?v=0ivcSjpUzl4&t=271) CI helps, but not much since the manual parts are still a bottleneck. ## [8:01](https://www.youtube.com/watch?v=0ivcSjpUzl4&t=481) CI/CD tools like Jenkins, GH Actions, CircleCI, CodeFresh (?) are only orchestrators. They shouldn't be used to actually script your automated tests. ## [8:36](https://www.youtube.com/watch?v=0ivcSjpUzl4&t=516) You should run tests locally even before you push to the main branch. ## [11:17](https://www.youtube.com/watch?v=0ivcSjpUzl4&t=677) Continuous Delivery is all the fully automated processes that occur to get changes into production. ## [11:37](https://www.youtube.com/watch?v=0ivcSjpUzl4&t=697) Only the decision to promote to production is manual, and this decision is a click of a button (it's easy to do). ## [12:38](https://www.youtube.com/watch?v=0ivcSjpUzl4&t=758) CD is an extension of CI. It's not something that comes AFTER CI. It's what happens when you have full trust in an automated process . ## [15:26](https://www.youtube.com/watch?v=0ivcSjpUzl4&t=926) Test for whether or not you're doing CD: get any random person to pick a "production-ready" build to release into production. How do you feel? If you are nervous, then you're not doing CD. If you are not, then you are doing CD. ## [16:12](https://www.youtube.com/watch?v=0ivcSjpUzl4&t=972) Continuous Deployment is like Continuous Deliver, except that there is no button that must be manually pushed before something is deployed. Everything is just always deployed to production. ## [17:18](https://www.youtube.com/watch?v=0ivcSjpUzl4&t=1038) Feature flags: means you're using Continuous Delivery, not Continuous Deployment. ## [18:57](https://www.youtube.com/watch?v=0ivcSjpUzl4&t=1137) Continuous Testing shouldn't be something separate from CI, CD(elivery), or CD(eployment). Continuous testing is just always involved in all three of those. ## Citation ``` [^farcic]: Farcic, V. (2021). _Continuous integration, delivery, deployment, and testing explained_. From https://www.youtube.com/watch?v=0ivcSjpUzl4 ```