Trunk-based strategies Branch by Abstraction Use branch-by-abstraction to make complex or larger scale changes to to your application incrementally while keeping the system working.
Trunk-based strategies Branch by Abstraction button branch trunk register page branch textfield branch component, test & storybook component, test & storybook PR new branch new branch new branch PR pull from mainline pull from mainline PR
Trunk-based strategies Branch by Abstraction button branch trunk register page branch textfield branch PR new branch new branch new branch PR pull from mainline pull from mainline PR component, test & storybook component, test & storybook component as abstraction
button branch trunk register page branch textfield branch component, test & storybook component, test & storybook PR PR pull from mainline pull from mainline PR new branch new branch Trunk-based strategies Branch by Abstraction new branch Short-lived branches
button branch trunk register page branch textfield branch component, test & storybook component, test & storybook new branch new branch new branch PR Trunk-based strategies Branch by Abstraction PR PR pull from mainline pull from mainline Concurrent development Small commit - continuous code review
Trunk-based strategies Feature Toggle Feature Toggles are a powerful technique, allowing teams to modify system behavior without changing code. martinfowler.com
Trunk-based strategies Feature Toggle using Angular APP_ INITIALIZER APP STATE images taken from flaticon.com Feature Flag Directive App true false true true
Trunk-based strategies Feature Toggle trunk releases feature A branch MVP 1.0 flag off MVP 1.1 flag on flag removed MVP 2.0 feature A feature A feature B branch pull from mainline
trunk releases feature A branch MVP 1.0 flag on flag removed MVP 2.0 feature A feature B branch commit to trunk at least once every 24 hours codebase is always releasable on demand and helps to make Continuous Delivery a reality Trunk-based strategies Feature Toggle flag off MVP 1.1 feature A pull from mainline
Summary Continuous integration complementing Agile and Trunk-based is the key enabler for Continuous integration. They are supporting each other to accomplish the goal to speed up the time to ship the product to customers as early as possible. Team should adapt techniques like branch-by- abstraction and feature toggles in day to day development to allow smooth and safe code integration.