Size: a a a

2019 August 14

В

Вовка in QA Alliance
Дмитрий Игоревич
Привет. Это хорошая тема и важно понимать, что здесь серебряной пули нет. Очень много факторов которые влияют.
Мне больше симпатизирует разработка по гит-флоу... очень мощный инструмент, если которого строго придерживаться, то будет относительно все хорошо..

Мы на прошлой работе как раз таки придерживались такого подхода..
Важно то, что разработчики работают только с девелопом... делают ветку и в эту ветку подливают данные из девелопа.

По сути когда функционал готов и отдается на тест, в ветку подливаются данные из девелопа т.е. актуализируется с текущим состоянием. Тест. Если тест пройден успешно, то ветка мержится в девелоп.
Вот здесь разработчик должен проявить бдительность и здравый смысл. Смотреть каким образом будет происходить слияние веток, дабы не перезатереть уже разработанный кем-то раннее функционал.
После успешного слияния, прогоняется смоук тесты по главному функционалу разрабатываемой фичи, а так же проверяется интеграция в целом... Но тут такой момент, что  тестировщик должен все таки понимать, какой фунционал мог сломаться при интеграции..

Так же важен факт отдельной жизни ветки от девелопа.. Если это более 2-3 рабочих дней, то в таком случае разработка становится очень дорогой.. Почему? Потому что, по хорошему разработчик должен регулярно подтягивать измения из девелопа для того, чтобы его ветка была в актуальном состоянии, а не в устаревшем. Для того чтобы не плодить баги в будущем и не тратить на их устранение..

Далее, когда планируемый фунционал закончен, и смержен с девелопом.. из девелопа собирается релизная ветка. И по ней уже прогоняется полное регрессионное тестирование..
При обнаружении багов в релизной ветке идем таким же путем...

Когда релиз стабилен, он выкатывается на прод и закрывается.. В этот момент, автоматом идет актуализация мастера с релизной веткой. Мастер актуализирован, после чего актуализируется ветка девелоп с мастером..

Если найден баг на проде и его необходимо фиксить сейчас и это не может подождать до следующего релиза, тогда открывается хотфикс.. т.е. ветка хотфикс ветвится от мастера и после успешного фикса мержится с мастером напрямую. Мастер снова актуализируется с девелопом.
В данном случае советую не держать долго открытыми ветки хотфикса, т.к. это дорого и при закрытии возмодно будет много конфликтов при актуализации мастера с девелопом,  а так же актуализации веток разработчиков по цепной реакции..
Привет. Вот у нас как раз такой флоу как ты и описал. Точь в точь.

Кажды дев делаю свой тикет в отдельной ветке, перед деплоем на дев, он стягивает дев на свою ветку, проверят все ли нормально
Если все гуд, то кидает на ревью + идет запуск юнит тестов на его ветке.
Дальше после ревью, ветка заливается на дев, где тоже запускаются тесты(но это не точно) и в этот момент тикет попадает ко мне на тестирование.
Ну и перед релизом проходит регресс (иногда) и потом уже все заливается на прод
источник

ДИ

Дмитрий Игоревич... in QA Alliance
Дальше после ревью, ветка заливается на дев, где тоже запускаются тесты(но это не точно) и в этот момент тикет попадает ко мне на тестирование.

ветка заливается на дев - это ты имеешь ввиду стенд для тестирования, а не ветку ? верно?
источник

В

Вовка in QA Alliance
Дмитрий Игоревич
Дальше после ревью, ветка заливается на дев, где тоже запускаются тесты(но это не точно) и в этот момент тикет попадает ко мне на тестирование.

ветка заливается на дев - это ты имеешь ввиду стенд для тестирования, а не ветку ? верно?
ну грубо говоря да, тестовый сервак 🙂
источник

DA

Dmitry Archie in QA Alliance
Дмитрий Игоревич
Привет. Это хорошая тема и важно понимать, что здесь серебряной пули нет. Очень много факторов которые влияют.
Мне больше симпатизирует разработка по гит-флоу... очень мощный инструмент, если которого строго придерживаться, то будет относительно все хорошо..

Мы на прошлой работе как раз таки придерживались такого подхода..
Важно то, что разработчики работают только с девелопом... делают ветку и в эту ветку подливают данные из девелопа.

По сути когда функционал готов и отдается на тест, в ветку подливаются данные из девелопа т.е. актуализируется с текущим состоянием. Тест. Если тест пройден успешно, то ветка мержится в девелоп.
Вот здесь разработчик должен проявить бдительность и здравый смысл. Смотреть каким образом будет происходить слияние веток, дабы не перезатереть уже разработанный кем-то раннее функционал.
После успешного слияния, прогоняется смоук тесты по главному функционалу разрабатываемой фичи, а так же проверяется интеграция в целом... Но тут такой момент, что  тестировщик должен все таки понимать, какой фунционал мог сломаться при интеграции..

Так же важен факт отдельной жизни ветки от девелопа.. Если это более 2-3 рабочих дней, то в таком случае разработка становится очень дорогой.. Почему? Потому что, по хорошему разработчик должен регулярно подтягивать измения из девелопа для того, чтобы его ветка была в актуальном состоянии, а не в устаревшем. Для того чтобы не плодить баги в будущем и не тратить на их устранение..

Далее, когда планируемый фунционал закончен, и смержен с девелопом.. из девелопа собирается релизная ветка. И по ней уже прогоняется полное регрессионное тестирование..
При обнаружении багов в релизной ветке идем таким же путем...

Когда релиз стабилен, он выкатывается на прод и закрывается.. В этот момент, автоматом идет актуализация мастера с релизной веткой. Мастер актуализирован, после чего актуализируется ветка девелоп с мастером..

Если найден баг на проде и его необходимо фиксить сейчас и это не может подождать до следующего релиза, тогда открывается хотфикс.. т.е. ветка хотфикс ветвится от мастера и после успешного фикса мержится с мастером напрямую. Мастер снова актуализируется с девелопом.
В данном случае советую не держать долго открытыми ветки хотфикса, т.к. это дорого и при закрытии возмодно будет много конфликтов при актуализации мастера с девелопом,  а так же актуализации веток разработчиков по цепной реакции..
Ну вот у нас почти то же, только при том что ветка "дев" выливается в "мастер" автоматом - мы решили, что для нас в ней нет смысла. А так - да, если что-то сломалось в мастере, то бросаем всё и бежим его чинить.
источник

ДИ

Дмитрий Игоревич... in QA Alliance
Dmitry Archie
Ну вот у нас почти то же, только при том что ветка "дев" выливается в "мастер" автоматом - мы решили, что для нас в ней нет смысла. А так - да, если что-то сломалось в мастере, то бросаем всё и бежим его чинить.
почему в ней нет смысла?
источник

DA

Dmitry Archie in QA Alliance
Дмитрий Игоревич
Читаю комменты выше..... типа - тестурем фичу с веткой, затем вливаем в мастер..
ну такое...
мастер должен быть в акутальном состоянии с продом.. ибо если чуть что произойдет.. то всегда можно будет откатиться до нормального стабильного состояния...
Можно просто откатить все коммиты за час. Тогда мастер снова будет в рабочем состоянии. Но такое нам вроде не пригождалось на моей памяти
источник

DA

Dmitry Archie in QA Alliance
А, не. Пригождалось - не могли починить мастер 3 часа = откатили всё и разработчики заново перетестировалт свои изменения и заливали в мастер. А у одного - тесты упали ;)
источник

DA

Dmitry Archie in QA Alliance
Дмитрий Игоревич
почему в ней нет смысла?
Потому что гитфлоу - это про то что есть разработка релизами. Релиз-трейн: каждый час всё что есть тестируется и отправляется на прод. Не залился сейчас - зальёшься через час.
источник

ДИ

Дмитрий Игоревич... in QA Alliance
Вот на текущем месте работы используем релиз-трейны..
На мой взгляд, чисто субъективное мнение..
этот метод менее удобен
источник

ДИ

Дмитрий Игоревич... in QA Alliance
Dmitry Archie
Потому что гитфлоу - это про то что есть разработка релизами. Релиз-трейн: каждый час всё что есть тестируется и отправляется на прод. Не залился сейчас - зальёшься через час.
по сути вам ветка девелоп никак бы не помешала..
источник

DA

Dmitry Archie in QA Alliance
На самом деле я криво тут использовал "релиз трейн", потому что это термин из другой области
источник

DA

Dmitry Archie in QA Alliance
Дмитрий Игоревич
по сути вам ветка девелоп никак бы не помешала..
А зачем она нам?
источник

DA

Dmitry Archie in QA Alliance
Чтобы из неё переливать каждый час в мастер и его деплоить?
источник

DA

Dmitry Archie in QA Alliance
Чтобы что?
источник

DA

Dmitry Archie in QA Alliance
Вовка
Привет. Вот у нас как раз такой флоу как ты и описал. Точь в точь.

Кажды дев делаю свой тикет в отдельной ветке, перед деплоем на дев, он стягивает дев на свою ветку, проверят все ли нормально
Если все гуд, то кидает на ревью + идет запуск юнит тестов на его ветке.
Дальше после ревью, ветка заливается на дев, где тоже запускаются тесты(но это не точно) и в этот момент тикет попадает ко мне на тестирование.
Ну и перед релизом проходит регресс (иногда) и потом уже все заливается на прод
В основном потому что это - здравый смысл ;)
источник

DA

Dmitry Archie in QA Alliance
Можно ещё сделать ветку qa, в которую будет литься дев для тестов и потом будет литься в мастер для деплоя.
источник

DA

Dmitry Archie in QA Alliance
А ещё будет ветка "аксептанс", в которую будет литься qa, которая будет деплоиться на приёмочный сервер и через час если никто не против - на прод.
источник

В

Вовка in QA Alliance
Dmitry Archie
Можно ещё сделать ветку qa, в которую будет литься дев для тестов и потом будет литься в мастер для деплоя.
у меня на старой работе такое было…
Был дев, куа, демо, прод  список серваков
источник

В

Вовка in QA Alliance
А вообще когда ж была очень офигенная статья по гиту на хабре, мы по ней работали лет 5 назад
источник

DA

Dmitry Archie in QA Alliance
Мы тут про ветки :)
источник