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