[PHP] Deployerでステージング環境へのデプロイ時にはcomposer installに--no-devを付けないようにする
小ネタですが知らなかった人にとっては意外とお役立ち情報かもしれません😇
PHPのデプロイツール Deployer は、「レシピ」という予め用意されている設定ファイルを利用すれば、設定の記述量がすごく少なくて済むので便利です。
参考
https://deployer.org/recipes.html
https://github.com/deployphp/deployer/tree/master/recipe
ただ、時にはレシピの設定を一部変更して使いたいこともありますよね。
例えば、Deployerではデフォルトで composer install
が --no-dev
で実行されるようになっていますが、ステージング環境では --no-dev
なしでインストールしたいというケースもあると思います。
というわけでその方法を説明していくのですが、実はすごく簡単です。
そもそも composer install --no-dev
しているコードは以下の箇所です。
そしてこの {{composer_options}}
は以下の箇所で設定されており、
ここに --no-dev
が入っています。
なので、この {{composer_options}}
変数の値を自分の deployer.php
で上書きしてあげればいいだけです👍
やり方は、公式ドキュメント にあるとおり、ホスト設定の set()
メソッドを使うだけです。
具体的には、以下のようにステージング環境のホスト設定でのみ、 composer_options
の値を --no-dev
を含まない内容に変更すればよいです。
host('prod')
->hostname('xxx.com')
->user('xxx')
->addSshOption('StrictHostKeyChecking', 'no')
->set('branch', 'release')
->set('deploy_path', '/path/to/deploy')
;
host('staging')
->hostname('staging.xxx.com')
->user('xxx')
->addSshOption('StrictHostKeyChecking', 'no')
->set('branch', 'master')
->set('deploy_path', '/path/to/deploy')
->set('composer_options', '{{composer_action}} --verbose --prefer-dist --no-progress --no-interaction --optimize-autoloader --no-suggest')
;
これで、ステージングへのデプロイは --no-dev
なしで composer install
が実行されるようになります。めでたしめでたし。
Discussion