Home > Advent Calendar 2013 | PHP > Travis CI を使って PHP コードを HHVM 環境でテストする

Travis CI を使って PHP コードを HHVM 環境でテストする

この記事の所要時間: 458

Shin x blog Advent Calendar 2013 の 14 日目です。

travis-ci-meets-hhvm

PHP の高速な実行環境として知られる HHVM の新しいバージョン 2.3.0 がリリースされました

今回のリリースでは、オープンソースプロジェクトの CI サービスとして人気の Travis CI へのサポートが発表されました。以前から Travis CI では、PHP 5.2 から PHP 5.5 の実行環境がサポートされていたのですが、ここに HHVM 環境が新たに加わることになります。

さっそく、Travis CI の HHVM 環境を試してみました。

Travis CI の設定

Travis CI 上で HHVM 環境でのテストを行う設定は簡単です。.travis.yml の php:hhvm を追加するだけです。

php:
  - hhvm

これで、次回のテストから hhvm 環境で実行されます。

Travis CI の HHVM 環境でテスト

簡単な PHP プロジェクトをテストしてみます。ソースコードは下記になります。

shin1x1/travis-ci-sample

ここでは足し算を行う TravisCISample\Calculator クラスを作り、そのテストを PHPUnit で書きました。ローカルで phpunit を実行するとテストが通ります。

$ ./vendor/bin/phpunit --colors test
PHPUnit 3.7.28 by Sebastian Bergmann.

.

Time: 23 ms, Memory: 2.25Mb

OK (1 test, 1 assertion)

Travis CI の設定を .travis.yml に書きました。PHP 5.3 から 5.5、そして HHVM を実行環境として設定しています。

language: php

php:
- 5.3
- 5.4
- 5.5
- hhvm

before_install:
- composer install

script:
- phpunit --colors --coverage-text test

このコードを GitHub に push します。あらかじめ Travis CI では、このプロジェクトを CI の対象として設定しているので、push するとテストが実行されます。

テスト結果が下記です。PHP のバージョンとして、HHVM 環境で実行されています。今回のテストに関しては、HHVM 上でも動作することが分かりました。

travis-ci-hhvm

https://travis-ci.org/shin1x1/travis-ci-sample/builds/15438927

つまづいた点

HHVM 環境を試してみて、つまづいた点を。

Composer インストール

.travis.yml の before_installcurl -sS https://getcomposer.org/installer | php を入れていたのですが、下記のエラーが出てビルドが停止しました。HHVM では、標準入力による PHP スクリプト実行はサポートされていないのかもしれません。

そもそも Travis CI の環境では、composer コマンドが用意されており composer.phar をインストールする必要が無かったので、この処理は省きました。

HipHop Notice: Nothing to do. Either pass a .php file to run, or use -m server

The command "php" failed and exited with 1 during before_install.

https://travis-ci.org/shin1x1/travis-ci-sample/jobs/15438538

php -q オプション

これは CakePHP のコードを HHVM で動かした時に発生したのですが、内部で php コマンドに -q オプションを付けて実行している箇所があり、このオプションを HHVM が対応していないためにエラーとなりました。

ためしに -q オプションを削除して実行してみると、その箇所は動作するようになりました。(また別のエラーが出ていますが。)

Error in command line: unknown option -q

https://travis-ci.org/shin1x1/cakephp/jobs/15436509

2.3 のリリースを見ると、HHVM 環境では HHVM_VERSION という定数が定義されるようなので、これ使えば、HHVM 固有の処理を記述ことができそうです。

if (defined('HHVM_VERSION')) {
    // HHVM 環境のみの処理
}

さいごに

Travis CI で簡単に HHVM 環境を使えることが分かりました。

本番環境として HHVM を使うようになるかどうかは分かりませんが、Travis CI なら自分で環境を作ること無く試すことができるのが良いです。

今回は簡単なスクリプトでしたが、PHP の実行速度を問われるようなコードであれば、HHVM の性能を測る手段としても使えそうですね。

HHVM 2.3.0 and Travis CI « HipHop Virtual Machine

Pocket

follow us in feedly

Home > Advent Calendar 2013 | PHP > Travis CI を使って PHP コードを HHVM 環境でテストする

検索
フィード
メタ情報

Return to page top