Continuous Integration
What is 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.
What is a shared repository?

Version Control in a Nutshell

Feature Branches

Pros of Feature Branches
- Code in there is merged until everything is ready, meaning there's less risk of breaking an integration environment (staging)
Pros of Feature Branches
Downsides of Feature Branches
- QA gets blocked until everything is ready (meaning testing 2 days before a close of sprint)
- Code gets out of date super fast with multiple teams touching the same codebase for different projects
- Merge Conflicts are chaotic

Continuous Integration - No Feature Branches
This sounds very magical, but, how is this really achieved?
Feature Flagging
Feature flagging is a mechanism that allow us to send pieces of code that can be reviewed in an integration environment, but they will not be displayed in production until a feature version is complete
Very similar to A/B Testing
Example of Feature Flagging

This has it's downsides, right?
Yes, some of them:
- Code needs to have additional logic to identify if a flag is turned on/off, in order to execute specific logic
- Code needs to be cleaned up after finishing a feature so the feature flag is no longer required and it's not polluting the code
- Demos have some risks if a flag is turned off for some reason (happened to us)
But at the end, it has more advantages, but it always depends
Thanks
What do you mean with "Integrating Code"?

Continuous Integration as a Holistic Practice
By Alberto Romero
Continuous Integration as a Holistic Practice
- 170