У нас есть система управления исходным кодом в стиле Gitflow / trunk в Git, где выпуски проходят следующий процесс:
- Разветвление ветки разработчика
master
- Запрос разработки от разработчиков в
master
- После объединения PR сборка происходит со средой "QA"
- Код командных тестов QA
- Мы делаем релиз с
master
(от разработчиков PR до master
, мы проводим некоторое тестирование, а затем делаем релиз).
Теперь у данной «сборки» для QA может быть несколько кусков работы.Проблема в том, что если проблема обнаружена на шаге 4) выше, у нас есть только следующие варианты:
- Исправить код (медленно)
- Перейти к работе с проблемой (риск)
В принципе, один плохой «кусок» работы означает, что другая хорошая работа не может быть запущена в производство.
Как мы можем это исправить?
Этомои идеи, с точки зрения моих предпочтений:
- Использовать конвейер 'release', например:
Означает, что каждый коммит проходит набор этапов.Если «новая» работа не проходит стадию, она не продвигается.Другими словами, мы можем освободиться от «последней известной хорошей сборки».Для этого можно использовать что-то вроде Octopus Deploy. - Использовать ветки 'release' в Git.После того, как что-то протестировано, мы перемещаем его в ветку 'release'.
- Cherry-pick good commits в Git.Вид похож на 2.
Есть предложения?Каковы лучшие методы решения этой проблемы?