Короткая заметка с примерами конфигов о том, как использовать Travis CI при разработке модулей для Magento обеих версий.
Общая информация
Пример кода приложения: Описание приложения для Magento 2. Приложение для Magento 1 довольно похоже по структуре и способу развертывания.Каждый из рассматриваемых модулей является головным модулем приложения Magento (содержит инструкции по развертыванию конечного веб-приложения и подключению к нему других модулей).
Развертывание может происходить в одном из трех вариантов:
- жить : для конечного использования (режим производства);
- работа : для разработки (режим разработки);
- Трэвис : для тестирования в среде Travis CI;
После этого запускается установщик 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
Дескриптор Трэвиса:Во время развертывания и тестирования не возникает серьезных сюрпризов; весь процесс занимает около 3-4 минут.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
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
-
Google И Лунное Затмение
19 Oct, 24 -
Канобувости, 49-Й Выпуск
19 Oct, 24 -
5G Для Железных Монстров
19 Oct, 24 -
Статьи На Английском Языке.
19 Oct, 24 -
Мобильный Офис: Sparespace Против Custorus
19 Oct, 24