Что такое Trunk-Based Development (TBD)?

«Что такое Trunk-Based Development (TBD)?» — вопрос из категории DevOps, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Trunk-Based Development (TBD) – это стратегия управления версиями, при которой разработчики постоянно интегрируют свой код в одну главную ветку (trunk, main), избегая долгоживущих feature-веток.

Ключевые принципы:

  1. Одна главная ветка: main всегда находится в рабочем, готовом к деплою состоянии.
  2. Короткоживущие ветки: Feature-ветки, если создаются, живут не более 1-2 дней перед слиянием в main.
  3. Частые мелкие коммиты: Изменения интегрируются в main несколько раз в день.
  4. Непрерывная интеграция (CI): Каждый коммит в main запускает сборку и полный набор тестов.

Базовый workflow:

# 1. Получить последнюю версию main
git checkout main
git pull origin main

# 2. Создать короткоживущую ветку для задачи
git checkout -b feature/add-validation

# 3. Реализовать изменение и закоммитить
# ... (работа в течение нескольких часов)
git commit -m "Add email format validation"

# 4. Вернуться в main, обновить и смержить
git checkout main
git pull origin main
git merge feature/add-validation

# 5. Немедленно запушить изменения в main
git push origin main
# CI/CD пайплайн автоматически запускает тесты и деплой

Преимущества:

  • Меньше merge-конфликтов: Частая интеграция предотвращает расхождение кода.
  • Быстрая обратная связь: Проблемы интеграции обнаруживаются сразу.
  • Упрощённый CI/CD: Ветвление и релизные стратегии проще.
  • Поддержка непрерывного деплоя: main всегда готов к продакшену.

Когда использовать: В командах, практикующих Agile/DevOps, с сильной культурой автоматизированного тестирования. Используется в Google, Facebook, Netflix.

Альтернатива: Долгоживущие feature-ветки и Git Flow, которые лучше подходят для проектов с чёткими релизными циклами.