development and deployment freedom - modx meetup minsk

13
Development and deployment freedom Вадим Хомчик WebTechnico MODX Meetup Minsk, 29.11.14

Upload: modx-

Post on 14-Jul-2015

344 views

Category:

Presentations & Public Speaking


0 download

TRANSCRIPT

Development and deployment freedomВадим Хомчик WebTechnico

MODX Meetup Minsk, 29.11.14

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