Автоматизация процесса разработки
Автоматизация процесса разработки
• Как мы почти полностью автоматизировали процесс разработки ФРИИ
• Как облегчить взаимодействие с QA
• Как облегчить появление нового члена команды
• Расскажу какая боль лежала в основе "Software process framework"
Немного примеров
Слайд с кодом со сложной бизнес логикой
Слайд с историей коммитов изменяющих сложную бизнес логику
и отдална тестирование
• Проект со сложной бизнес логикойкоторая постоянно меняется
• Постоянно тестируется несколько задач
• Разработка организована через недельные спринты
Например
Pull Requests
Pull Requests
Pull Requests
Pull Requests
Pull Requests
Pull Requests
Pull Requests
Сложности
Pull Requests
• Нужно дергать разработчика чтобы задеплоил
• Нужно постоянно мержить и деплоить
• Нужно за всем этим следить
• Нет возможности “Раздеплоить” и много еще чего
• Протестированные задачи лучше оставлять на этом же сервере
Последствия
• Большая несогласованность
• Вместо написания кода мы постоянно мержим, правим конфликты и деплоим
• Нас дергает тестировщик и другие члены команды
Попытки решения
Автоматизация ручных действий
1. Форкает текущую ветку
2. Мержит в нее все PR с меткой
3. Форс пуш на гитхаб
4. Деплой на тестирование
Результат
• Меньше конфликтов
• Просто "раздеплоить PR"
• Меньше ручной работы
Что осталось
• Несогласованность
• Новым разработчикам рассказывать по новой
• Все равно нужно что-то запускать
Формализация процесса
Software process framework
achempion / software_process_framework
Зачем нужен
• Общий подход
• Уже решенные проблемы
• Рекомендации по организации процесса
Git-flow
Git-flow
История
└── releases/ ├── current/ │ ├── .keep │ ├── task-11 │ ├── task-13 │ └── task-15 └── history/ ├── .keep └── 2017-02-02
└── releases/ ├── current/ │ ├── .keep │ ├── task-11 │ ├── task-13 │ └── task-15 └── history/ ├── .keep └── 2017-02-02
releases / current / task-11
rake db:seed:anketa:load VERSION=base_v9 rake single2:rewrite_text_adequate
└── releases/ ├── current/ │ ├── .keep │ ├── task-11 │ ├── task-13 │ └── task-15 └── history/ ├── .keep └── 2017-02-02
└── releases/ ├── current/ │ ├── .keep │ ├── task-11 │ ├── task-13 │ └── task-15 └── history/ ├── .keep ├── 2017-02-02 └── 2017-03-19
releases/history/2017-02-02
preac-1523 rake single2:preac_1523_fill_refreshed_atpreac-1539preac-1542preac-1222preac-1254preac-1285 rake db:seed:cofoundit:load VERSION=selection_v3 preac-1326 rake single:preac_1326preac-1327 rake db:seed:anketa:load VERSION=base_v9 rake db:seed:cofoundit:load VERSION=selection_v3 preac-1329preac-1330preac-1339preac-1498 rake db:seed:anketa:load VERSION=base_v9 rake single2:rewrite_text_adequatepreac-1499 rake single2:peac_1498_set_default_cofoundit_selection_rating preac-1522preac-1524
achempion / srelease
Соглашения
Формат коммитов
[refs #task-13] commit messageдля одной задачи
[refs #task-11, #task-15] commit messageдля нескольких
Отсылка к номеру задачи
Управление задачами
Каждая задача должна содержать ссылку на Pull Request
Поставка задач QA
Скоро в open-source
Спасибо
/ achempion
/ achempion