カットの下で-変化する条件に適応した環境の展開の新しい例。
環境タスク
この例には、次の機能を提供するスクリプトが含まれています。
- 環境をローカルに展開して、Magento2モジュールを開発します。
- Travis CIサービスに環境を展開して、Magento2モジュールをテストします。
まとめ
メインのディレクトリとファイルの説明flancer32 / sample_mage2_module :
- / deploy / :展開中に使用されるファイル。
- /composer_opts.json :オリジナルのcomposer.json Magento2 CEに追加するオプション。
- /composer_unset.json :削除する元のcomposer.jsonのキーのリスト。
- /merge_json.php:Magento2 CEメインJSONファイルと追加オプションをマージするためのユーティリティ。
- /dev/fw/FuncTestApp.php :機能テストを実行するMagento2アプリケーションの実装。
- / src / :Magentoモジュール自体のソース。
- / test / :Magentoモジュールのテスト。
- /機能/ :モジュールの機能テスト(データベースへの接続あり);
- / unit / :ユニットユニットテスト(環境全体がモックされています ');
- / work / :Magentoモジュールを開発およびテストするための環境展開ディレクトリ。
- /.travis.yml:Travis CIのテストスクリプト。
- /composer.json : 開発中のモジュールのcomposer.json;
- /deploy.sh :展開スクリプト。
- /deploy_cfg.sh.init :ローカルスキャン構成パラメーターを設定するためのテンプレート。
- /deploy_cfg.sh.travis:Travis CIへの展開の構成オプション。
一般的な展開アルゴリズム
- composerを使用して、Magento2 CEプロジェクトを作成します。
- プロジェクトの
composer.json
CEを必要な指示で補完します。 - コンポーザーを使用して、プロジェクトを更新します。
- Magento自体のインストーラーを実行して、データベースを初期化します。
- ディレクトリとファイルの権利を公開します。
構成
展開中、構成は
./deploy_cfg.sh
ファイルから読み取られます(明らかな理由によりバージョン管理下にありません)。 ローカル構成ファイルを作成するためのテンプレートには、2種類のパラメーターが含まれています。
追加オプションcomposer.json
追加オプションでは、元のMagento2 CEアプリケーションに以下が追加されます。
- 開発中のモジュール自体。
- Magento2アプリケーションの実装を使用して機能テストを実行する
autoload-dev
命令。 - composerパッケージの最小の安定性を
alpha
からdev
下げます。
JSON構成のマージ
この例では、JSON構成の読み取りとそれ以降の処理は、
./deploy/merge_json.php
は不要なユニバーサルデータコンテナー( DataObject )を介して実行されます(
./deploy/merge_json.php
参照)。 ただし、このコンポーネントを使用して、展開中に排他的に使用される追加の依存関係を展開するときに接続をテストしました。 一般に、干渉する場合は破棄できます。
merge_json.php
での編集に加えて、。
merge_json.php
から行を
./deploy.sh
必要もあります
echo "\nAdd initial dependencies to M2 CE project..." composer require flancer32/php_data_object:dev-master
マージする前に、元の
composer.json
Magento2 CEの
minimum-stability
要素が削除されます(
deploy/composer_unset.json
ファイルを参照)。 そうでない場合は、単一の値'dev'の代わりに配列['alpha'、 'dev']が含まれます。
アプリケーションの初期化
Magento2インストーラーは、単に
deploy.sh
から開始します。
php $M2_ROOT/bin/magento setup:install ...
初期化に使用可能なパラメーター 。
モジュールテスト
$ 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
トラビスのログ。
追加
バージョン管理
モジュールの開発は
./src
ディレクトリではなく、。
./work/vendor/flancer32/sample_mage2_module/src
ディレクトリで行われます。 IDEが開発中のすべてのモジュールを認識するためには、適切な設定でそれらをリストする必要があります(PhpStormの場合は、 ファイル/設定/バージョン管理です )。
Magento Connectの秘密鍵
作曲家プロジェクトを作成するには
$ composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition $M2_ROOT
Magento Connect Webサイトで「キー」のペアを作成する必要があります 。 コマンドラインから手動でデプロイする場合、コンポーザーはこれらのパラメーターをローカル設定に保存します; Travis CIにデプロイする場合、これらのパラメーターを環境変数 $ M2_KEY_PUB&$ M2_KEY_PRIVに設定するか、
.travis.yml
直接指定する必要があり
.travis.yml
。
- composer config -g http-basic.repo.magento.com PUBLIC PRIVATE
エラー:関数のネストレベルが「100」に達しました
このエラーが発生した場合は、
php.ini
に追加します。
xdebug.max_nesting_level=200
Phing
Phingは、 Magentoプロジェクトを構築するために何も提供しません(一般的にはそうすべきではありません)。 したがって、このように-シェルと作曲家。
「別の方法で」
このフレーズは、かつて私の目に留まった非常に古い料理本から引用したものです。
責任バウンス
この資料は単なる例であり、理解しないと実際のアプリケーションの展開の基礎として機能することはできません。