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