## CI - Continuous Integration
---
Continuous Integration (CI) is a development practice that requires developers to integrate code into a shared repository several times a day. Each check-in is then verified by an automated build, allowing teams to detect problems early.
---
### Why CI?
The main aim of CI is to prevent integration problems.
By integrating regularly, you can detect errors quickly, and locate them more easily.
---
### More CI advantages
- Spend less time debugging and more time adding features
- Stop waiting to find out if your code’s going to work
- Reduce integration problems allowing you to deliver software more rapidly
---
`“Continuous Integration doesn’t get rid of bugs, but it does make them dramatically easier to find and remove.”`
said Martin Fowler, Chief Scientist, ThoughtWorks
honestly don't know who tf is Martin Fowler but the presentation looks more intresting when adding some related quotes!
---
### How to use?
---
* Developers check out code into their private workspaces
* When done, commit the changes to the repository
* The CI server monitors the repository and checks out changes when they occur
* The CI server builds the system and runs unit and integration tests
* The CI server releases deployable artefacts for testing
---
* The CI server assigns a build label to the version of the code it just built
* The CI server informs the team of the successful build
* If the build or tests fail, the CI server alerts the team
* The team fixes the issue at the earliest opportunity
* Continue to continually integrate and test throughout the project
---
## Users responsibilites
* Check in frequently
* Don’t check in broken code
* Don’t check in untested code
* Don’t check in when the build is broken
{"metaMigratedAt":"2023-06-14T23:07:16.831Z","metaMigratedFrom":"Content","title":"Untitled","breaks":true,"contributors":"[{\"id\":\"c812783e-2740-47d0-8981-33bca2701792\",\"add\":2776,\"del\":1002}]"}