- PVSM.RU - https://www.pvsm.ru -
Осенью прошлого года, когда вышла Magento 2.0, я написал статью "Пример модуля для Magento 2 [1]", в которой обрисовал один из возможных вариантов формирования окружения для разработки модуля под вторую версию Magento. Совсем недавно вышли обновления (v 2.0.1 и v 2.0.2), судя по которым разработчики Magento уходят от схемы развертывания с использованием Magento Composer Installer [2] (при помощи которого разворачивается Magento 1 и разворачивалась в моем предыдущем примере Magento 2.0.0), По крайней мере, простое изменение версии Magento c 2.0.0 на 2.0.1 приводило к тому, что то, что разворачивалось, работать как Magento-приложение совершенно не хотело.
Под катом — новый пример развертывания окружения, адаптированный под изменившиеся условия.
Пример [3] содержит скрипты, предоставляющие возможность:
Описание основных каталогов и файлов flancer32/sample_mage2_module:
composer.json
CE проекта нужными нам инструкциями;
При развертывании конфигурация считывается из файла ./deploy_cfg.sh
(не находится под контролем версий по понятным причинам). Шаблон для создания конфигурационного локального файла содержит параметры двух типов:
deploy.sh
;В дополнительных опциях к оригинальному Magento2 CE приложению добавляются:
autoload-dev
для использования имплементации Magento2-приложения для запуска функциональных тестов;alpha
до dev
;
В данном примере считывание JSON-конфигурации и дальнейшая обработка ведется через универсальный контейнер данных (DataObject [5]), что, по большому счету, излишне (см. ./deploy/merge_json.php
). Тем не менее, я использовал этот компонент, чтобы проверить возможность подключения при развертывании дополнительных зависимостей, используемых исключительно при развертывании. Вообщем, это можно выкинуть, если мешает. Помимо правок в merge_json.php
также нужно выкинуть из ./deploy.sh
строки
echo "nAdd initial dependencies to M2 CE project..."
composer require flancer32/php_data_object:dev-master
Перед слиянием удаляется элемент minimum-stability
в оригинальном composer.json
Magento2 CE (см. файл deploy/composer_unset.json
), т.к. в противном случае он будет содержать массив [ 'alpha', 'dev' ] вместо единичного значения 'dev'.
Magento2-инсталлятор просто запускается из deploy.sh
:
php $M2_ROOT/bin/magento setup:install ...
Доступные для инициализации параметры [4].
$ cd work/vendor
$ php ./bin/phpunit -c flancer32/sample_mage2_module/test/unit/phpunit.dist.xml
$ php ./bin/phpunit -c flancer32/sample_mage2_module/test/functional/phpunit.dist.xml
Лог [6] Travis'а.
Разработка модуля происходит не в каталоге ./src
, а в каталоге ./work/vendor/flancer32/sample_mage2_module/src
. Для того, чтобы IDE распознавало все модули, находящиеся в разработке, нужно их перечислить в соответствующих настройках (для PhpStorm это File / Settings / Version Control).
Для создания composer-проекта
$ composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition $M2_ROOT
нужно создать пару "ключей" на сайте Magento Connect [7]. В случае развертывания вручную из командной строки composer сохраняет эти параметры в локальных настройках, в случае развертывания на Travis CI нужно задавать эти параметры в переменных окружения [8] $M2_KEY_PUB & $M2_KEY_PRIV или прямо указать в .travis.yml
:
- composer config -g http-basic.repo.magento.com PUBLIC PRIVATE
При возникновении данной ошибки нужно добавить в php.ini
:
xdebug.max_nesting_level=200
Phing [9] ничего не предлагает для сборки Magento-проектов (да он и не должен, в общем-то). Поэтому вот так — shell & composer.
Словосочетание взято из какой-то весьма старой поваренной книги, которая когда-то мне попалась на глаза.
Данный материал является просто примером и не может служить основой для развертывания реальных приложений без его осмысления.
Автор: flancer
Источник [10]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/deployment/112542
Ссылки в тексте:
[1] Пример модуля для Magento 2: https://habrahabr.ru/post/268245/
[2] Magento Composer Installer: https://github.com/magento/magento-composer-installer
[3] Пример: https://github.com/flancer32/sample_mage2_module
[4] настройки: http://devdocs.magento.com/guides/v2.0/install-gde/install/cli/install-cli-install.html#instgde-install-cli-magento
[5] DataObject: https://habrahabr.ru/post/273261/
[6] Лог: https://travis-ci.org/flancer32/sample_mage2_module/
[7] Magento Connect: https://www.magentocommerce.com/magento-connect/customerdata/secureKeys/list/
[8] переменных окружения: https://docs.travis-ci.com/user/environment-variables/#Defining-Variables-in-Repository-Settings
[9] Phing: https://www.phing.info/
[10] Источник: https://habrahabr.ru/post/277183/
Нажмите здесь для печати.