Как улучшить процесс разработки/тестирования/деплоя?

Все доброго дня!

Подскажите, пожалуйста, как улучшить процесс разработки/тестирования/деплоя?

Небольшой веб проект на yii2+mysql, код в bitbacket (включены smart commits), задачи в jira cloud (kanban: backlog->todo->in progress->review->done), виртуалки в Digital Ocean.

Сейчас разработка и деплой такие:

1. единственная ветка master, изменения базы через миграции.
2. после того как разработчики протестировали фичу у себя на компах, пушат ее в master. Передвигают задачу в Jira: in progress->review
3. master через вебхук, скриптом автоматически деплоится в тестовое окружение
4. выполняется ручное тестирование в тестовом окружении.
5. если багов нет, то выполняется ручной деплой (bash скрипт: git clone, composer, yii migrate, php init, rsync .. etc) на продакшн.

Хочется поменять процесс и на базе TeamCity добавить авто-тесты и некоторую автоматизацию чтобы было так (feature-ветки думал не использовать, так как у нас много небольших правок, а ветки добавляют оверхед):
В идеале, привязать все к задачам в jira и оперировать ими, а не коммитами.

1. две ветки: dev и master (который должен быть всегда готов к деплою на продакшн). Напрямую в master разработчики пушить не должны.
2. после того как разработчики протестировали фичу у себя, пушат ее в dev
3. teamcity слушает ветку dev и после пуша запускает автотесты
4. в случае успешного прохождения тестов приходит уведомление тестеру о необходимости ручного тестирования. В случае неуспешного - email разработчику об ошибке.
5. тестер выполняет ручное тестирование в тестовом окружении.
6. тестер "что-то нажимает" в teamcity и данный коммит (или группа коммитов по одной jira-задаче?) мерджится в master.
7. выполняется ручной деплой (bash скрипт) из master на продакшн. В перспективе деплой меняется на автоматический, так же через teamcity.

Вопросы:
- нормальная ли схема в целом? видите ли вы потенциальные проблемы?
- как реализовать пункт 6 в teamcity?
  • Вопрос задан
  • 3556 просмотров
Пригласить эксперта
Ответы на вопрос 4
saboteur_kiev
@saboteur_kiev Куратор тега Git
software engineer
"Хочется поменять процесс и на базе TeamCity добавить авто-тесты и некоторую автоматизацию чтобы было так (feature-ветки думал не использовать, так как у нас много небольших правок, а ветки добавляют оверхед):"

В том-то и дело, что авто-тесты без фича веток не очень хорошо будут работать.

Подробнее:
Автотесты обычно должны триггериться на коммит. Но это также означает, что разработчик не тестирует у себя локально приложение, а просто коммитит и ждет ответа от автотеста.
А если он будет коммитить в мастер - то один разработчик может сломать билд для всех.

Если использовать отдельную ветку для автотеста, опять же в нее может закоммитить несколько разработчиков и будет неясно кто кому что сломал.
Поэтому и используется фичабренчи - каждый разработчик создал себе фичабренч типа feature/lalala, и автотест реагирует на коммит в любой бренч по маске feature/*

Если тест успешен - тогда можно мержить в мастер - обычно для этого используется какой-то промежуточный инструмент перед гитом - gitlab, gerrit, bitbucket, где удобно настроить создание pull request-ов так, чтобы они не позволяли мержить, пока нет 1 ревью и 1 успешного билда.
Ответ написан
saintbyte
@saintbyte
Django developer
Перейдите на нормальный TDD для начала
Ответ написан
Комментировать
Ptolemy_master
@Ptolemy_master
Мы тоже думали про TeamCity, но, после того, как освоили Bitbucket pipelines, как-то решили обходиться без него.
Там можно настроить автоматический (то есть после пуша в ветку, любую) или ручной деплой (у нас деплоится на хероку).
То есть ваш пункт 6, я так понимаю, это наш ручной деплой - делается действительно практически одним нажатием.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
19 мар. 2024, в 11:29
1200 руб./за проект
19 мар. 2024, в 11:28
50000 руб./за проект
19 мар. 2024, в 11:26
50000 руб./за проект