しばやん雑記

Azure とメイドさんが大好きなフリーランスのプログラマーのブログ

Azure Web サイトの Custom Deployment Scripts を利用して PHP アプリケーション向けに Composer を自動実行する

f:id:shiba-yan:20141212012421p:plain

https://getcomposer.org/

Azure Web サイトに Ruby をインストールするデプロイスクリプトの謎挙動に悩まされっぱなしで疲れたので、少し気分を変えて PHP の Composer をデプロイ時に自動実行するスクリプトを作ってみました。

と言っても、基本的には Ruby の時と考え方は同じで、PHP 向けのデプロイスクリプトを生成して、それに php composer.phar install の実行を追加するだけです。

IF EXIST "%DEPLOYMENT_TARGET%\composer.json" (
  cd %DEPLOYMENT_TARGET%

  IF NOT EXIST "%DEPLOYMENT_TARGET%\composer.phar" (
    call curl -s http://getcomposer.org/installer | php > nul
    IF !ERRORLEVEL! NEQ 0 goto error
  )

  call php composer.phar install
  IF !ERRORLEVEL! NEQ 0 goto error
)

特に説明する必要すら感じないですが、wwwroot 以下に composer.json が存在している場合に composer.phar install を実行します。Composer 自体がインストールされていない場合は、サクッと自動でインストールするようになってます。

実際に Azure Web サイトの Git にデプロイした時の出力が以下のような感じ。

f:id:shiba-yan:20141212011535p:plain

パッケージのインストールが正常に終わっていることが確認できます。

一応 wwwroot 以下も確認しておくと、vendor ディレクトリが生成されており、その中には monolog や autoloader の設定が生成されていました。

f:id:shiba-yan:20141212012151p:plain

PHP は Azure Web サイトに最初からインストールされているので、挙動が安定している感じがあります。

今回作成した deploy.cmd を Gist に上げておきました。どうぞご自由にお使いください。

Custom Deployment Script for PHP composer

気分が良ければ適当にリポジトリをでっちあげるかもしれません。