Github Flow. Тестировщики против тестированияSQALabПрезентация Татьяны Писчасовой на SQA Days-16
14-15 ноября 2014, Санкт-Петербург, Россия
www.sqadays.com
Эволюция процесса деплоя в проекте — Денис Яковлев, 2ГИС2ГИС ТехнологииЕсли наш проект это не коробочный продукт, а, например, веб-сервис, на который постоянно ходят пользователи, их много и они сразу видят изменения, то в жизненном цикле разработки у нас возникает еще одна задача — задача деплоя готово кода в боевое окружение. В самом начале, когда наш проект маленький и простой на эту задачу никто может и не обращать внимание, так как все происходит быстро и просто. Процесс деплоя состоит из 2-3 общеизвестных шагов - git pull, yii migrate, etc...которые легко запомнить и в которых сложно ошибиться.
С развитием проекта его сложность возрастает — он уже крутится на нескольких серверах, появляются новые компоненты (утилититы, библиотеки и т.д.), новые сущности (балансеры, кешы, и т.д.). Держать всю инфраструктуру в голове становится невозможным, ведение документации привносит больше проблем чем решений, люди ошибаются чаще и т.д.
В докладе:
— Рассмотрим подробно вышеуказанные проблемы, с которыми неизбежно сталкиваются проекты.
— Обсудим какие решения существуют в индустрии (chef, ansible, etc), чем они отличаются, в чем их задача и какое решение выбрать;
— Поговорим про административные вопросы, которые с этим связаны.
Chef wtfVsevolod PolyakovKyivOps #0 at Ciklum, Sep 26, 2015
A story about why we in Grammarly abandoned development chef, as a configuration management system.
Путь мониторинга: модульность, гибкость, devopsVsevolod PolyakovДоклад на rootconf концеренции, о том как мы в grammarly устроили мониторинг на базе influx, graphite, sensu, statsd, logstash
«CI. Jenkins. 2GIS» — Игорь Павлов, 2ГИС DevDayВ своем докладе я поделюсь опытом использования сервера непрерывной интеграции Jenkins, который мы подняли для справочного и картографического API и проекта Онлайн.
Сделаю упор на следующих моментах:
— Jenkins — быстрый старт, как за час сделать свой первый билд.
— Возможности Jenkins: сборка проекта из репозитория, запуск тестов, создание отчётов.
— Расширение функционала: Pipeline (упорядочение сборок), Violations (красивая статистика), E-mail-плагин, плагин от Чака Нориса и пр.
— Опыт использования в веб-проектах 2ГИС.
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...OnticoHighLoad++ 2017
Зал «Кейптаун», 8 ноября, 10:00
Тезисы:
http://www.highload.ru/2017/abstracts/2914.html
Казалось бы, что нужно для организации тестового окружения? Тестовая железка и копия боевого окружения - и тестовый сервер готов. Но как быть, когда проект сложный? А когда большой? А если нужно тестировать одновременно много версий? А если все это вместе?
Организация тестирования большого развивающегося проекта, где одновременно в разработке и тестировании около полусотни фич - достаточно непростая задача. Ситуация обычно осложняется тем, что иногда есть желание потрогать еще не полностью готовый функционал. В таких ситуациях часто возникает вопрос: "А куда это можно накатить и где покликать?"
...
Мифы о DevOps / Александр Титов, Иван Евтухович (Экспресс 42)OnticoРИТ++ 2017, Root Conf
Зал Пекин + Шанхай, 5 июня, 10:00
Тезисы:
http://rootconf.ru/2017/abstracts/2830.html
Про DevOps, как и про Agile, сейчас говорят все, но все равно ничего не понятно. Часто послушаешь доклад и ощущение, что все в компании и так по DevOps, и не надо ничего делать, или, наоборот, ощущение, что это совершенно дикая история, и DevOps-практики категорически противопоказаны.
Мы не хотим рассказывать, что такое DevOps, а расскажем о мифах, которые вредят пониманию. Их не так много, но важно о них знать, потому что эти мифы для вас будут маркерами неправильных управленческих и инженерных решений:
1) DevOps может делать DevOps-отдел или DevOps-инженер.
2) DevOps — это про то, что надо нанимать специалистов-многостаночников, которые умеют все.
...
Как мы собираем проекты в выделенном окружении в Windows DockerPositive Hack Days1. Обзор Windows Docker (кратко)
2. Как мы построили систему билда приложений в Docker (Visual Studio\Mongo\Posgresql\etc)
3. Примеры Dockerfile (выложенные на github)
4. Отличия процессов DockerWindows от DockerLinux (Долгий билд, баги, remote-регистр.)
Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)OnticoHighLoad++ 2017
Зал «Пекин+Шанхай», 7 ноября, 14:00
Тезисы:
http://www.highload.ru/2017/abstracts/3073.html
Весь этот год мы в компании «Флант» активно переводили на Kubernetes проекты заказчиков, сильно различающихся как по масштабам, так и по технологиям. На данный момент (сентябрь 2017) у нас в Kubernetes (в production) функционируют 13 проектов, в состав которых входят более 130 различных приложений, написанных на 8 языках программирования: .NET, Erlang, Go, Java, Node.js, PHP, Python и Ruby. В этих проектах задействовано множество инфраструктурных компонентов, таких как Cassandra, Ceph, Firebird, Memcached, MongoDB, MySQL, NATS.io, NGINX, PostgreSQL, RabbitMQ, Redis, RethinkDB, Sphinx, SQLite и других. Мы поделимся обширным опытом, полученным в результате выстраивания CI/CD для таких приложений.
...
Инструмент ChangelogBuilder для автоматической подготовки Release NotesPositive Hack Days1. Основные понятия и определения: продукт, пакет, связи между ними.
2. Как узнать, какие изменения произошли в продукте?
3. Проблемы changelog и release note.
4. Решение: инструмент ChangelogBuilder для автоматической подготовки Release Notes
Как подружить команду админов с N командами разработки / Денис Яковлев (2ГИС)OnticoРИТ++ 2017, Root Conf
Зал Пекин + Шанхай, 5 июня, 12:00
Тезисы:
http://rootconf.ru/2017/abstracts/2750.html
Web-отдел 2ГИС - это 5 команд разработки и более 20 проектов разного калибра. Это означает множество релизов каждый день и постоянные изменения.
Что мы имели раньше? Команда - bottleneck из нервных админов, работающих часто сверхурочно.
Что сейчас - команда инфраструктурных инженеров, предоставляющая сервисы для команд разработки.
В своем докладе я расскажу, чем первое отличается от второго, как мы к этому пришли, и почему теперь нервов стало меньше.
Codeception + Docker + Robo и что из этого вышлоCOMAQA.BY Параллелизация тестов, а именно: лучший пхп тулл для автоматизации (Codeception); основы Docker контейнирезации; robo - что это и зачем он нам нужен; profit
Константин Назаров – Распараллеливание сборки Parallels Desktop для Mac404festИдея доклада — рассказать об использовании Jenkins как не типичного инструмента для построения распределенной сборки продукта, зарабатывающего миллионы долларов. Мы поделимся секретами его адаптации под сборку билдов сложных систем/продуктов с многими компонентами и ускорения в разы этой задачи.
Наша проблема: линейная сборка продукта занимает 8 часов. А Jenkins «из коробки» не умеет собирать сложные иерархии. При этом писать код самостоятельно не хочется. В итоге мы придумали, как использовать существующий инструмент, пройдясь по нему напильником.
Кому будет интересно: Эти знания могут помочь людям, которые хотят построить эффективный CI, но не хотят тратить много времени на исследования.
Мы выложим наш код и материалы на GitHub. Это будет довольно практично.
Лайфхаки:
Используем Build Flow + Groovy скрипты чтобы оркестрировать сложную иерархию с параллельными ветвями и собирать результаты
Правильное использование префиксов в названиях job-ов помогают автоматизировать группировку по бранчам
Переиспользуем окружения сборки много раз, не удаляя их
Предыдущий пункт в итоге оставляет за собой кучу мусора, которую мы периодически очищаем при помощи системных Groovy скриптов по job префиксу
Группировка большого количества job-ов в проекты и бранчи с использованием Nested View
Дамп и разворачивание job-ов из системы контроля версий по шаблону
Ну и взгляд в будущее: автоматический анализ билд проблем.
http://2014.404fest.ru/reports/jenkins/
Типовая сборка и деплой продуктов в Positive TechnologiesPositive Hack Days1. Проблемы в построении CI процессов в компании
2. Структура типовой сборки
3. Пример реализации типовой сборки
4. Плюсы и минусы от использования типовой сборки
Jenkins 2.0: Организуем тестирование в составе Continuous DeliverySQALabДоклад Олега Ненашева на конференции SQA Days-19, 20-21 мая 2016 г., Санкт-Петербург
«Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов2ГИС ТехнологииКак создать Front End-команду для высоконагруженного проекта? Спикер расскажет, как можно выстроить эффективный процесс фронтенд-разработки с упором на технические аспекты: — Команда фронтенд-разработчиков. Зоны ответственности между теми, кто программирует UI (верстальщики), и теми, кто отвечает за бизнес-логику (Javascript-программисты). Идеальный состав команды. — Настроенный технологический процесс. Модульная организация (подготовка дизайна → разработка формата данных → создание шаблона → навешивание событий → тесты). — Разработка вместе с тестированием Unit-/DOM-тесты и подход PixelPerfect. — Вёрстка независимыми блоками и встроенный в приложение режим для вёрстки блоков.
Суперсилы Chrome developer tools2ГИС ТехнологииВ своей работе мы постоянно используем инструменты, призванные облегчить нам жизнь. Но как хорошо мы ими на самом деле владеем? И почему мы пренебрегаем их суперсилами? Например, Chrome DevTools — это не только отладчик и инспектор HTML. Но когда у нас в руках молоток, кругом мерещатся гвозди. Десятки мегабайт и процентов загрузки процессора на вкладку браузера — верный признак того, что пора учиться пользоваться микроскопом.
Роман предложит освоить что-то посложнее молотка и расскажет о том, какую реальную пользу можно получить от профилирования, как найти в огромном отчёте проблему с кодом и что лучше — написать в коде десяток console.log или async debug.
Тимофей Чаптыков «Верстальщик должен быть ленивый»DevDayБольшую часть рабочего времени мы занимаемся не написанием новой функциональности, а тестированием, исправлением ошибок, рефакторингом. При этом писать классные фичи всем нравится гораздо больше, чем искать причину очередного хитроумного бага. Как сделать так, чтобы ошибок стало меньше, и мы могли тратить время на то, что доставляет удовольствие?
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...OnticoHighLoad++ 2017
Зал «Кейптаун», 8 ноября, 10:00
Тезисы:
http://www.highload.ru/2017/abstracts/2914.html
Казалось бы, что нужно для организации тестового окружения? Тестовая железка и копия боевого окружения - и тестовый сервер готов. Но как быть, когда проект сложный? А когда большой? А если нужно тестировать одновременно много версий? А если все это вместе?
Организация тестирования большого развивающегося проекта, где одновременно в разработке и тестировании около полусотни фич - достаточно непростая задача. Ситуация обычно осложняется тем, что иногда есть желание потрогать еще не полностью готовый функционал. В таких ситуациях часто возникает вопрос: "А куда это можно накатить и где покликать?"
...
Мифы о DevOps / Александр Титов, Иван Евтухович (Экспресс 42)OnticoРИТ++ 2017, Root Conf
Зал Пекин + Шанхай, 5 июня, 10:00
Тезисы:
http://rootconf.ru/2017/abstracts/2830.html
Про DevOps, как и про Agile, сейчас говорят все, но все равно ничего не понятно. Часто послушаешь доклад и ощущение, что все в компании и так по DevOps, и не надо ничего делать, или, наоборот, ощущение, что это совершенно дикая история, и DevOps-практики категорически противопоказаны.
Мы не хотим рассказывать, что такое DevOps, а расскажем о мифах, которые вредят пониманию. Их не так много, но важно о них знать, потому что эти мифы для вас будут маркерами неправильных управленческих и инженерных решений:
1) DevOps может делать DevOps-отдел или DevOps-инженер.
2) DevOps — это про то, что надо нанимать специалистов-многостаночников, которые умеют все.
...
Как мы собираем проекты в выделенном окружении в Windows DockerPositive Hack Days1. Обзор Windows Docker (кратко)
2. Как мы построили систему билда приложений в Docker (Visual Studio\Mongo\Posgresql\etc)
3. Примеры Dockerfile (выложенные на github)
4. Отличия процессов DockerWindows от DockerLinux (Долгий билд, баги, remote-регистр.)
Лучшие практики CI/CD с Kubernetes и GitLab / Дмитрий Столяров (Флант)OnticoHighLoad++ 2017
Зал «Пекин+Шанхай», 7 ноября, 14:00
Тезисы:
http://www.highload.ru/2017/abstracts/3073.html
Весь этот год мы в компании «Флант» активно переводили на Kubernetes проекты заказчиков, сильно различающихся как по масштабам, так и по технологиям. На данный момент (сентябрь 2017) у нас в Kubernetes (в production) функционируют 13 проектов, в состав которых входят более 130 различных приложений, написанных на 8 языках программирования: .NET, Erlang, Go, Java, Node.js, PHP, Python и Ruby. В этих проектах задействовано множество инфраструктурных компонентов, таких как Cassandra, Ceph, Firebird, Memcached, MongoDB, MySQL, NATS.io, NGINX, PostgreSQL, RabbitMQ, Redis, RethinkDB, Sphinx, SQLite и других. Мы поделимся обширным опытом, полученным в результате выстраивания CI/CD для таких приложений.
...
Инструмент ChangelogBuilder для автоматической подготовки Release NotesPositive Hack Days1. Основные понятия и определения: продукт, пакет, связи между ними.
2. Как узнать, какие изменения произошли в продукте?
3. Проблемы changelog и release note.
4. Решение: инструмент ChangelogBuilder для автоматической подготовки Release Notes
Как подружить команду админов с N командами разработки / Денис Яковлев (2ГИС)OnticoРИТ++ 2017, Root Conf
Зал Пекин + Шанхай, 5 июня, 12:00
Тезисы:
http://rootconf.ru/2017/abstracts/2750.html
Web-отдел 2ГИС - это 5 команд разработки и более 20 проектов разного калибра. Это означает множество релизов каждый день и постоянные изменения.
Что мы имели раньше? Команда - bottleneck из нервных админов, работающих часто сверхурочно.
Что сейчас - команда инфраструктурных инженеров, предоставляющая сервисы для команд разработки.
В своем докладе я расскажу, чем первое отличается от второго, как мы к этому пришли, и почему теперь нервов стало меньше.
Codeception + Docker + Robo и что из этого вышлоCOMAQA.BY Параллелизация тестов, а именно: лучший пхп тулл для автоматизации (Codeception); основы Docker контейнирезации; robo - что это и зачем он нам нужен; profit
Константин Назаров – Распараллеливание сборки Parallels Desktop для Mac404festИдея доклада — рассказать об использовании Jenkins как не типичного инструмента для построения распределенной сборки продукта, зарабатывающего миллионы долларов. Мы поделимся секретами его адаптации под сборку билдов сложных систем/продуктов с многими компонентами и ускорения в разы этой задачи.
Наша проблема: линейная сборка продукта занимает 8 часов. А Jenkins «из коробки» не умеет собирать сложные иерархии. При этом писать код самостоятельно не хочется. В итоге мы придумали, как использовать существующий инструмент, пройдясь по нему напильником.
Кому будет интересно: Эти знания могут помочь людям, которые хотят построить эффективный CI, но не хотят тратить много времени на исследования.
Мы выложим наш код и материалы на GitHub. Это будет довольно практично.
Лайфхаки:
Используем Build Flow + Groovy скрипты чтобы оркестрировать сложную иерархию с параллельными ветвями и собирать результаты
Правильное использование префиксов в названиях job-ов помогают автоматизировать группировку по бранчам
Переиспользуем окружения сборки много раз, не удаляя их
Предыдущий пункт в итоге оставляет за собой кучу мусора, которую мы периодически очищаем при помощи системных Groovy скриптов по job префиксу
Группировка большого количества job-ов в проекты и бранчи с использованием Nested View
Дамп и разворачивание job-ов из системы контроля версий по шаблону
Ну и взгляд в будущее: автоматический анализ билд проблем.
http://2014.404fest.ru/reports/jenkins/
Типовая сборка и деплой продуктов в Positive TechnologiesPositive Hack Days1. Проблемы в построении CI процессов в компании
2. Структура типовой сборки
3. Пример реализации типовой сборки
4. Плюсы и минусы от использования типовой сборки
Jenkins 2.0: Организуем тестирование в составе Continuous DeliverySQALabДоклад Олега Ненашева на конференции SQA Days-19, 20-21 мая 2016 г., Санкт-Петербург
«Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов2ГИС ТехнологииКак создать Front End-команду для высоконагруженного проекта? Спикер расскажет, как можно выстроить эффективный процесс фронтенд-разработки с упором на технические аспекты: — Команда фронтенд-разработчиков. Зоны ответственности между теми, кто программирует UI (верстальщики), и теми, кто отвечает за бизнес-логику (Javascript-программисты). Идеальный состав команды. — Настроенный технологический процесс. Модульная организация (подготовка дизайна → разработка формата данных → создание шаблона → навешивание событий → тесты). — Разработка вместе с тестированием Unit-/DOM-тесты и подход PixelPerfect. — Вёрстка независимыми блоками и встроенный в приложение режим для вёрстки блоков.
Суперсилы Chrome developer tools2ГИС ТехнологииВ своей работе мы постоянно используем инструменты, призванные облегчить нам жизнь. Но как хорошо мы ими на самом деле владеем? И почему мы пренебрегаем их суперсилами? Например, Chrome DevTools — это не только отладчик и инспектор HTML. Но когда у нас в руках молоток, кругом мерещатся гвозди. Десятки мегабайт и процентов загрузки процессора на вкладку браузера — верный признак того, что пора учиться пользоваться микроскопом.
Роман предложит освоить что-то посложнее молотка и расскажет о том, какую реальную пользу можно получить от профилирования, как найти в огромном отчёте проблему с кодом и что лучше — написать в коде десяток console.log или async debug.
Тимофей Чаптыков «Верстальщик должен быть ленивый»DevDayБольшую часть рабочего времени мы занимаемся не написанием новой функциональности, а тестированием, исправлением ошибок, рефакторингом. При этом писать классные фичи всем нравится гораздо больше, чем искать причину очередного хитроумного бага. Как сделать так, чтобы ошибок стало меньше, и мы могли тратить время на то, что доставляет удовольствие?
Как защитить свой код2ГИС ТехнологииРегрессивное тестирование особенно важно во фронтенд-приложениях, где велика связность сразу трёх технологий: HTML, CSS и JavaScript. Мы расскажем о юнит-тестах, которые проверяют часть приложения (блок, модуль и т.п.) по всем этим параметрам: размеры и другие CSS-свойства; наличие или отсутствие определённых элементов и их атрибутов; отработка кликов и других событий; и многое другое. Покажем примеры тестов, типичные ошибки и реальные баги.
Партицирование и миграции данных на примере PostgreSQL — Денис Иванов, 2ГИС2ГИС Технологии- Автоматическое распределение данных по партициям, а также чтение, обновление и удаление данных без единой правки кода.
- Автоматическое обновление структур партиций (индексы, ограничения (constraints), триггеры, правила (rules) и т.д.).
- Удобные и гибкие миграции для больших команд с большим количеством данных, хранимых процедур, представлений, таблиц, типов, миграций, дельт и т.п. Как это всё организовать и поддерживать?
- Инструменты и утилиты, которые мы используем для вышеперечисленных целей.
«Велогосипед», Данил ИльиныхDevDayГод от года многие программисты решают одни и те же задачи, но не всегда среди огромного многообразия решений можно найти что-то подходящее. Вот и мы не смогли найти ни одной библиотеки логирования для C++, которая удовлетворяла бы всем нашим требованиям. Теперь у нас есть свой велосипед, и мы расскажем, чем он лучше других.
Article25Harry WoodA talk about humanitarian mapping with OpenStreetMap. This was August 9th 2011 at an event organised by <a>Article25</a>, <a>sponge network</a>, and <a>RIBA knowledge communities</a>.
Используем неизменяемые данные и создаем качественный код — Игорь Кудрин, 2ГИС2ГИС ТехнологииМы рассмотрим обеспечение неизменяемых данных в С++, возможности самого языка, а также использование подходов для написания понятного кода.
Zero Downtime PHP Deployment with Envoyer And ForgeYehor HerasymchukThis is a presentation for conference RIT++
Zero Downtime Deployment of our Laravel Apps with Envoyer
And Easy management of servers with Forge
Практика разработки веб-серверов на RustMichael PankovRust позволяет писать быстрые и надёжные программы. Особенно когда они многопоточные. Это делает его хорошим выбором для написания серверной части разнообразных веб-приложений.
Но что для этого нужно? Зачем терпеть все эти длиннющие ошибки от borrow checker'а? Что с продуктивностью разработки? Где взять библиотеки? А что если библиотеки нет? Какой веб-фреймворк выбрать? Как отлаживать и профилировать код?
В своём докладе я отвечу на эти и другие вопросы. Ещё я расскажу, что нужно делать, чтобы обойти проблемные места, которые у Rust, конечно, тоже есть.
Всё это — на примере кода инфраструктурного сервера, обеспечивающего «всегда зелёный master» (commit gatekeeper, аналог homu и zuul).
«Continuous Integration — A to Z или Непрерывная интеграция — кто всё сломал?»FDConfДоклад о том, зачем нужен CI, как он интегрируется в процесс разработки. В докладе есть небольшое демо о весьма известном cloud-based CI сервисе Travis-CI. В процессе демо будет «поломан» билд и затем сразу же починен. Весьма показательно в том плане, что это доказывает простоту всей технологии.
Выбираем стратегию создания бранчейVitebsk DSCВ современном мире все меняется очень быстро. Слишком быстро. И требования заказчика в том числе. Гибкие методологии разработки позволяют адаптироваться к быстро меняющимся требованиям. Но как сохранить стабильность приложения в данных условиях, как оставить заказчика удовлетворенным и при этом сберечь психическое здоровье разработчиков? Этот доклад о том, как быстро двигаться вперед без опаски оступиться.
Презентация подготовлена по материалам выступления Евгения Гавриленко на витебской конференции “Developer's Software Conference” (12.11.2016).
Никита Шультайс. "Система управления версиями git"Egor StremousovОсновные тезисы выступления:
- организация репозитория,
- ветвление,
- базовые команды,
- работа в одиночку и в команде.
После выступления прошла бурная дискуссия, обмен опытом и приятное общение с профессионалами.
8. 6 принципов GitHub Flow
1. master всегда в рабочем состоянии и готов к деплою
2. Каждая новая ветвь создаётся от master и имеет понятное название
3. Постоянно актуализируйте удалённую ветвь и локальную
4. В любой момент времени создавайте Pull Request
5. Вливайте ветвь только после того как кто-то просмотрел изменения
6. Как только изменения попали в master их следует задеплоить
8
9. 6 принципов GitHub Flow
1. master всегда в рабочем состоянии и готов к деплою
2. Каждая новая ветвь создаётся от master и имеет понятное название
3. Постоянно актуализируйте удалённую ветвь и локальную
4. В любой момент времени создавайте Pull Request
5. Вливайте ветвь только после того как кто-то просмотрел изменения
6. Как только изменения попали в master их следует задеплоить
9
10. #4 и #5 — Pull Request merge master
• Большая команда — генерирует много PR
• Подвисший PR быстро устаревает (1,5 мес)
• Две системы трекинга — Github и ваша внутренняя
• Достаточно ли ревью чтобы слить задачу в master?
10
11. #4 и #5 — Что пришлось сделать
• Оповещаем о самых срочных PR
• Утром и после обеда каждый выделяет время на ревью
• Ревью минимум от 2-х членов команды
• Подружили JIRA и Github
• В JIRA держим задачи и ориентируемся на все статусы
• В Github ведём только CodeReview
• Написали расширение к Chrome для отображения статуса PR
11
13. 6 принципов GitHub Flow
13
1. master всегда в рабочем состоянии и готов к деплою
2. Каждая новая ветвь создаётся от master и имеет понятное название
3. Постоянно актуализируйте удалённую ветвь и локальную
4. В любой момент времени создавайте Pull Request
5. Вливайте ветвь только после того как кто-то просмотрел изменения
6. Как только изменения попали в master их следует задеплоить
14. #2 и #3 — Разработка в ветках
• Актуализируем локальную ветку — merge vs. rebase
• Актуализируем удалённу ветку — force push после rebase
Нужно хорошо знать и уметь пользоваться git
14
15. #2 и #3 — Что пришлось сделать
1. Принять ряд соглашений по работе с ветками
• Именование веток
• Описать жизненный цикл
• Нет множественному ветвлению
2. Провести 2 внутренних семинара по использованию git
15
16. 6 принципов GitHub Flow
16
1. master всегда в рабочем состоянии и готов к деплою
2. Каждая новая ветвь создаётся от master и имеет понятное название
3. Постоянно актуализируйте удалённую ветвь и локальную
4. В любой момент времени создавайте Pull Request
5. Вливайте ветвь только после того как кто-то просмотрел изменения
6. Как только изменения попали в master их следует задеплоить
17. #1 и #6 — Деплоить!!1
• Готов к деплою — протестирован
• В порядке поступления — быстро
17
18. #1 и #6 — Деплоить!!1
Тестируется быстро
• Есть богатый набор тестов всех уровней
• Jenkins или любая другая система
Выкатывается быстро
• Есть система автоматической сборки проекта
• Ansible, Chef или любая другая система
18
19. #1 и #6 — Что пришлось сделать
19
• Дополнить базу тестов почти на 50% — ~3 недели работы
• Группы тестов для каждого этапа
• Настроить Jenkins на организацию автоматических сборок и прогона
финального набора тестов
• Процесс и инфраструктура для выкладки проекта
20. Итого, нам пришлось сделать
20
• В срочном порядке дописывать недостающие автотесты
• Полностью перенастроить систему автоматизированного
тестирования (CI)
• По максимуму автоматизировать и отладить процесс доставки кода на
бой (CD)
• Принять несколько дополнительных командных соглашений
• Написать расширение для браузера для синхронизации Jira+Gihub
• Провести несколько тренингов/презентаций по Git
21. Каких результатов достигли
• На проекте есть честный CodeReview
• Более 1000 F-тестов которые реально помогают
• Пул из ~10-15 PR
• 5-7 на ревью
• 5-7 готовы к тестированию
• Самый старый PR - 8-12 дней
• 1 QA в день интегрирует 2-4 PR. Т.е 4-12 PR/день
• Последняя ретроспектива - GithubFlow круто!
21
24. Git Flow
The primary reason for moving away is that the git-flow process is hard to
deal with in a continuous (or near-continuous) deployment model.
Nicholas C. Zakas
The general feeling is that git-flow works well for products in a more
traditional release model, where releases are done once every few weeks....
Nicholas C. Zakas
““
24
25. Команда профессионалов
• 1 Project Manager
• 1 Team Lead
• 9 JS Developers
• 4 FE Developers
• 3 QA
25