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
```