Я разработчик программного обеспечения в довольно большой гибкой команде (у нас есть восемь разработчиков, активно вносящих изменения в один репозиторий кода). Каждые две недели мы запускаем новую версию нашего программного обеспечения. Вот наш текущий рабочий процесс:
- При запуске новой задачи разработчики создают «ветку возможностей» из основной ветки разработки (мы используем git ) и отрабатываем эту новую ветку.
- Как только разработчик завершил работу над своей задачей, он объединяет свою функциональную ветвь с веткой разработки.
- Разработчик объединяет ветку разработки в ветку QA.
- Сборка запускается из ветви QA. Выходные данные этой сборки развернуты в нашей среде QA, чтобы позволить тестировщикам начать тестирование.
Наши тестировщики довольно часто находят проблемы с этими новыми функциями, которые были объединены в ветку QA. Это означает, что в любой момент времени среда QA, вероятно, содержит несколько новых функций - некоторые протестированы и не содержат ошибок, а некоторые не работают. Это затрудняет выпуск, так как сборка QA редко находится в состоянии готовности к работе.
Чтобы смягчить это, мы пытались инициировать «зависание QA», что означает, что разработчики не объединяют нашу ветку разработки с веткой QA за пару дней до релиза. Исправления ошибок в среде QA производятся непосредственно в ветви QA и объединяются в ветку разработки. Теоретически, это не позволяет использовать новые, нарушенные функции QA, но в то же время позволяет исправлять проблемы уже в QA.
Хотя эта концепция «заморозки QA» была частично успешной, ее сложно координировать, и люди часто не понимают, разрешено ли им сливаться с QA. Также было трудно установить конечный срок "заморозки QA" - всем нравится идея о некоторой передышке между заморозкой и выпуском, но на практике они предпочли бы иметь свою особенность в следующем выпуске, чем соблюдать крайний срок.
Есть ли лучший способ обеспечить чистую сборку наших выпусков каждую неделю?