При рассмотрении философий CI/CD мы вместо Feature Branches говорили о подходе Trank Based Development для скрытой разработки новой функциональности в основной Git-ветке.
Сегодня это сделаем на практике. Добавим к проекту инфраструктуру полноценной работы с Feature Toggle для фронтенда на ReactJS и бэкенда на PHP.
И при разработке компонента для бэкенда рассмотрим и применим принцип ISP из SOLID.
- 00:00:32 Continuous-методики
- 00:01:40 Неудобства подхода Feature Branches
- 00:06:11 Переход к практикам CI
- 00:08:31 Способы скрытой разработки
- 00:10:29 Подход с Feature Toggle
- 00:15:01 Запуск проекта
- 00:15:51 Команда обновления зависимостей
- 00:19:44 Упрощение E2E теста
- 00:21:03 Структура директорий фронтенда
- 00:22:32 Упрощение импорта через JS-индекс
- 00:24:40 Проверка контента в E2E
- 00:26:04 Выбор готового компонента
- 00:27:41 Прямая передача фич
- 00:28:46 Описание типов через PropTypes
- 00:32:18 Передача через FeaturesContext
- 00:35:56 Кастомный FeaturesProvider
- 00:37:27 Компонент FeatureFlag
- 00:41:38 Включение фич по Cookies
- 00:43:58 E2E тесты для проверки фич
- 00:45:43 Более удобное конфигурирование
- 00:49:10 Отключение через Cookie
- 00:55:23 Пользовательский хук useFeatures
- 00:56:51 Вынос списка фич в файл
- 00:57:29 Обзор результата для фронтенда
- 00:58:19 Feature Toggle для бэкенда
- 00:59:47 Сервис FeatureFlag
- 01:03:25 Способы включения для тестов
- 01:04:58 Конфигурирование фич для API
- 01:07:13 Расширение для Twig
- 01:09:47 Обработка HTTP-заголовка в Middleware
- 01:11:12 ISP из SOLID
- 01:17:52 Отключение для тестов
- 01:21:13 Логирование активных фич
- 01:24:46 Контекст для передачи данных
- 01:27:14 Handler для Monolog
- 01:28:27 Обзор результата в бэкенде
- 01:29:01 Нюанс работы с очередями
- 01:31:49 Выгоды подхода
- 01:35:07 Задача оптимизации Pipeline
А в следующем эпизоде займёмся оптимизацией Pipeline, чтобы сборка в Jenkins занимала меньше времени.
Скрытый контент (код, слайды, ...) для подписчиков.
Открыть →Чтобы не пропускать новые эпизоды подпишитесь на наш канал @deworkerpro в Telegram
Спасибо.
Спасибо. Побольше бы про SOLID.
Спасибо. Про ISP очень понравилось.
Добрый день. Подскажите вы в одном из уроков упоминали файл с настройками для PhpStorm. Не могу найти.
Когда устанавливали React создавали файл
frontend/.editorconfig
Дмитрий, добрый день,
очень познавательно, используя Feature Flags стало более очевидным преимущество trunk based подхода версионирования сборок в сравнении с git flow. На Вашей практике, насколько часто используете trunk based workflow, есть советы когда он мало применим?
Спасибо.
PS: когда примерно ожидается выход следующего выпуска (OAuth2 с JWT)?))
В своих проектах всегда разбиваю большую задачу на микрозадачи и их сразу мелкими коммитами пушу в master. В чужих уже зависит от договорённостей внутри команды и команды с заказчиком.
Малоприменим он для экспериментов и спорных задач, где малопонятно что нужно делать и нужно ли это делать вообще. Тогда лучше экспериментировать с таким кодом в отдельной ветке. А когда после экспериментов и обсуждения выберется оптимальный вариант и задача сформулируется точнее, то уже внедрять в основной код.
А вообще у такого подхода есть неудобство в том, что недоделанный код живёт не в отдельной ветке, а находится в рабочей ветке вперемешку с готовым. Приходится более скрупулёзно следить за актуальностью кода и не забывать время от времени вычищать код старых уже отключенных фич.
Обновимся до PHP 8 и начнём.
Дмитрий, благодарю за развернутый ответ, очень полезно, и спасибо за Ваш труд!
Или войти через: