Що таке Trunk-Based Development?
Trunk-Based Development (TBD) - це Git-підхід, при якому вся команда працює навколо однієї основної гілки (зазвичай main або trunk), а зміни в неї потрапляють дуже часто і маленькими порціями.
Простіше кажучи: «Одна головна гілка, часті коміти, мінімум довгоживучих гілок».
Основна ідея Trunk-Based Development
- є одна центральна гілка -
main/trunk - розробники:
- або комітять напряму в неї (із захистами),
- або використовують дуже короткоживучі feature-гілки (години або 1-2 дні)
- код постійно інтегрується і тестується
Жодних тижневих feature-гілок.
Як виглядає робота на практиці
Варіант 1: узагалі без feature-гілок
- Взяв задачу
- Зробив маленьку зміну
- Прогнав тести
- Закомітив у
main
Варіант 2: з короткими feature-гілками
- Створив гілку від
main - Зробив невелику частину задачі
- Відкрив PR
- Влив у
mainтого ж дня - Видалив гілку
Як при цьому не зламати продакшн
У Trunk-Based Development майже завжди використовують:
- feature flags (feature toggles) - код у
main, але вимкнений - суворий CI
- автотести
- заборону великих PR
Код може бути в main, але недоступний користувачам.
Чим відрізняється від Feature Branch Workflow
| Feature Branch | Trunk-Based |
|---|---|
| Довгі feature-гілки | Короткі або без гілок |
| Великі PR | Маленькі PR |
| Інтеграція наприкінці | Інтеграція постійно |
| Конфлікти пізніше | Конфлікти раніше і простіше |
Переваги Trunk-Based Development
- Дуже швидкі релізи
- Менше merge-конфліктів
- Постійна інтеграція
- Чудово підходить для CI/CD
Недоліки
- Вимагає високої дисципліни
- Потрібні хороші тести
- Без feature flags - ризиковано
- Складніше для новачків
Коли Trunk-Based Development підходить
- часті релізи (кілька разів на день)
- CI/CD
- продукт активно розвивається
- команда досвідчена
- важлива швидкість постачання
Коли не підходить
- рідкісні релізи
- великі фічі без флагів
- слабкі тести
- недосвідчена команда
Коротка відповідь для співбесіди
Trunk-Based Development - це підхід, при якому розробка ведеться навколо однієї основної гілки, а зміни вливаються в неї часто і маленькими порціями, що спрощує інтеграцію і прискорює релізи.
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.