development and deployment freedom - modx meetup minsk
TRANSCRIPT
MODX: Creative freedom
Гибкие шаблоны
Удобная и настраиваемая админка
Большое количество расширений
«Непереносимость» настроек и кода
Как выглядит типичный процесс разработки на MODX?Основной цикл
• Развернули MODX на localhost’е;
• Программируем;
• Делаем дамп базы данных;
• Заливаем файлы и дамп в продакшн;
Внесение изменений
• Заходим в админку на продакшн;
• Дорабатываем прямо в там - в лучшем случае в секретном разделе :)
ПричинаЧасть артефактов системы хранится
не в файловой системе (FS), а в СУБД (DB)
Артефакт ‒ элемент информации, который используется или порождается в процессе разработки программного обеспечения. [UML]
Артефакты FS DBassets images, javascripts, stylesheets
packages lexiconselements snippets, chunks, plugins, tvs, templates
settings, media sources, content types, forms, content types
contexts, security settings, component settings, etc
Что разработчику хорошо?
• Хранить все в файловой системе;
• Контроль версий посредством SCM;
• Работать из любимой IDE или редактора;
• Публикация изменений с минимальным количеством усилий;
Development freedom
• Выносим все артефакты в файловую систему;
• Осуществляем мониторинг (watching) изменяемых файлов (артефактов);
• При их изменении/удалении отображаем в базу данных;
Карты преобразований Карты преобразований (maps) необходимы для отображения наших файлов в php-код для сохранения или удаления объектов в MODX
Front matter
Jekyll-style YAML-метаданные
Позволяют расширить файл и хранить в нем помимо основного контента наборы атрибутов
YAML config1. Maps: Шаблоны преобразования файлов в PHP-инструкции для сохранения/удаления артефактов; На данный момент источник — GitHub;
2.Modules: Gulp (Node.js) модули преобразования файлов;Источник - npmjs;
3.Map: Идентификатор шаблона указанных в maps;
4.Pipeline: Последовательность модулей указанных в modules;
Deployment freedom• Пакеты обновлений создаются на базе файлов из git diff пропущенных через map/pipeline;
• Ноды опрашивают сервер на предмет наличия пакетов обновлений;
• При наличии пакет скачивается и устанавливается;
z
n
n
n
n
Что в итоге получилось?
• Хранение всех артефактов в GIT;
• Возможность полной разработки сайта на MODX из IDE;
• Возможность непрерывной поставки изменений в production (staging) — continuous delivery;
Ближайшие планы
• Публикация ядра и базовых компонент как open source на GitHub (http://github.com/zaffre);
• Написание карт для компонент, доработка карты MODX;
• Бета-тестирование zaffre.io