Модули Magento И Travis Ci

Короткая заметка с примерами конфигов о том, как использовать Travis CI при разработке модулей для Magento обеих версий.



Общая информация

Пример кода приложения: Описание приложения для Magento 2. Приложение для Magento 1 довольно похоже по структуре и способу развертывания.

Каждый из рассматриваемых модулей является головным модулем приложения Magento (содержит инструкции по развертыванию конечного веб-приложения и подключению к нему других модулей).

Развертывание может происходить в одном из трех вариантов:

  • жить : для конечного использования (режим производства);
  • работа : для разработки (режим разработки);
  • Трэвис : для тестирования в среде Travis CI;
В каждом из вариантов сначала с помощью PHP Composer осуществляется развертывание в отдельную директорию самого Magento, а затем в развертываемое приложение монтируются файлы модулей (копируемые во время живого развертывания, в остальных случаях связанные через символические ссылки).

После этого запускается установщик Magento, создающий при необходимости исходную базу данных, и SQL-скрипт, изменяющий значения по умолчанию в исходной базе данных в зависимости от типа развертывания (включение навигации по символическим ссылкам, ведение журнала и т. д.).

).

Чтобы не плодить слишком много сущностей, для разработки (работы) и CI-тестирования (travis) используется один набор скриптов развертывания:

  • работа/composer.json : ручка ( М1 / М2 ) композиторский проект;
  • работа/cfg/bin/deploy/post_install.sh : образец ( М1 / М2 ) сценарий оболочки для запуска установщика Magento и сценария SQL;
  • работа/cfg/bin/deploy/post_install.sql : образец ( М1 ) SQL-скрипт с изменениями для девелоперской версии среды;
Само приложение развертывается в подкаталоге .

/work/htdocs/ .

При развертывании в шаблонах post_install.sh И post_install.sql переменные (заполнители — пути, параметры доступа к базе данных, URL-адреса и т. д.) заменены их фактические значения из файла конфигурации .

/work/templates.json и полученные скрипты помещаются в каталог .

/work/bin/deploy/ .

Тестирование всех модулей, входящих в приложение, описано в дескрипторах PHPUnit:

  • работа/тест/функционал/phpunit.dist.xml : ручка ( М1 / М2 ) для запуска функциональных тестов (с подключением к базе данных);
  • работа/тест/единица/phpunit.dist.xml : ручка ( М1 / М2 ) для запуска модульных тестов (без подключения к базе данных);


CI для Magento 1

Дескриптор Трэвиса:
  
  
  
   

sudo: false # use container-based environment on Travis language: php php: - 5.6 - hhvm - '7' before_install: - cd work # go to root folder for development environment - pwd # control current path ('LOCAL_ROOT' in templates.json) - cp templates.json.travis templates.json # create configuration for Travis from template - composer self-update # update composer to prevent error Class 'Composer\Installer\PackageEvents' not found in # .

/work/vendor/aydin-hassan/magento-core-composer-installer/src/CoreManager.php on line 109 - composer install # install project using PHP Composer - cat .

/bin/deploy/post_install.sh # control parameters in the installation script - cat .

/bin/deploy/post_install.sql # control parameters in the SQL script - sh .

/bin/deploy/post_install.sh # create initial DB, run SQL script, setup permissions, .

script: - phpunit --configuration .

/test/unit/phpunit.dist.xml # run project's unit tests - phpunit --configuration .

/test/functional/phpunit.dist.xml # run project's functional tests

Во время развертывания и тестирования не возникает серьезных сюрпризов; весь процесс занимает около 3-4 минут.

CI для Magento 2

Дескриптор Трэвиса:

sudo: required # use Travis standard env ( http://docs.travis-ci.com/user/ci-environment/ ) language: php php: - 5.6 # - hhvm # there is an error on DB installation: "Command option 'language': Invalid value. To see possible values, # .

run command 'bin/magento info:language:list '.

" before_install: # Setup MySQL 5.6 on Ubuntu 12.04 (thanks to drogus - https://gist.github.com/drogus/6718448 ): - mysql --version # control version before upgrade - sudo apt-get remove mysql-common mysql-server-5.5 mysql-server-core-5.5 mysql-client-5.5 mysql-client-core-5.5 - sudo apt-get autoremove - sudo apt-get install libaio1 - wget -O mysql-5.6.14.deb http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.14-debian6.0-x86_64.deb/from/http://cdn.mysql.com/ - sudo dpkg -i mysql-5.6.14.deb - sudo cp /opt/mysql/server-5.6/support-files/mysql.server /etc/init.d/mysql.server - sudo ln -s /opt/mysql/server-5.6/bin/* /usr/bin/ # some config values were changed since 5.5 - sudo sed -i'' 's/table_cache/table_open_cache/' /etc/mysql/my.cnf - sudo sed -i'' 's/log_slow_queries/slow_query_log/' /etc/mysql/my.cnf - "sudo sed -i'' 's/basedir[^=]\\+=.

*$/basedir = \\/opt\\/mysql\\/server-5.6/' /etc/mysql/my.cnf" # there is an error # .

w/o double quotes: The command "sudo sed -i'' 's/basedir[^=]\+=.

*$/basedir = \/opt\/mysql\/server-5.6/' /etc/mysql/my.cnf" failed and exited with 1 during .

- sudo /etc/init.d/mysql.server start - mysql --version # control version after upgrade # Deploy Magento 2 application # Go to working folder, copy templates.json for travis and start composer install process - cd work # go to root folder for development environment - pwd # control current path ('LOCAL_ROOT' in templates.json) - cp templates.json.travis templates.json # create configuration for Travis from template # - composer self-update # update composer to prevent error Class 'Composer\Installer\PackageEvents' not found in # .

/work/vendor/aydin-hassan/magento-core-composer-installer/src/CoreManager.php on line 109 - composer install # Run post installation script (deploy Magento2 itself) - cat .

/bin/deploy/post_install.sh # control parameters in the installation script - sh .

/bin/deploy/post_install.sh # create initial DB, setup permissions, .

script: - phpunit --configuration .

/test/unit/phpunit.dist.xml # run project's unit tests - phpunit --configuration .

/test/functional/phpunit.dist.xml # run project's functional tests # - phpunit --configuration .

/htdocs/dev/tests/unit/phpunit.xml.dist # run Magento 2 unit tests

С Magento 2 все немного интереснее.

Для начала нужно решить проблему с версией MySQL. Стандартная среда Трэвиса (Ubuntu 12.04) использует сервер MySQL 5.5, а для Magento 2 требуется версия 5.6. Помогло способ от коллеги Дрогуса.

Потом выяснилось, что кроме версии PHP 5.6 деплой нигде не происходит. На PHP 7 Magento 2 ругается, а на HHVM не запускается установщик.

Ошибка при запуске установки Magento 2, несмотря на то, что параметр языка включен («en_US»):

Command option 'language': Invalid value. To see possible values, run command 'bin/magento info:language:list

Для наших нужд достаточно только PHP 5.6, поэтому с HHVM я даже не стал бороться.

Также можно запускать тесты на самом Magento 2, но на Travis они проваливаются на 4071 (из 15062) из-за нехватки памяти:

.

PHP Fatal error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 122133 bytes) in /home/travis/build/flancer32/sample_mage2_module/work/vendor/phpunit/phpunit/src/Util/GlobalState.php on line 110

Весь процесс развертывания и тестирования занимает около 8-10 минут. Теги: #magento #электронная коммерция magento #инструменты magento #composer #php #инструменты развертывания #непрерывная интеграция #travis ci #travis ci #travis #travis #php #Разработка для электронной коммерции #magento

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.