CakePHP アプリケーションのユニットテストをGitLab CI で実行する
今週末開催されるPHPカンファレンス福岡2017に参加するため、金曜日から現地入りする予定のtanakaです。 参加される方がいらっしゃいましたら仲良くしてください。
昨日(2017/06/07)開催されたGitLab Meetup Tokyo #3: GitLab 9.xリリース記念 - connpassに参加しましたが、GitLabを活用して業務を効率化するために勉強してます。 バシャログでも積極的に活用法を共有していきます。 今回は、CakePHP アプリケーションのユニットテストをGitLabで実行する方法を調査したので、ご紹介します。
前提
- GitLabでPushされたときにESLintやstylelintを実行する | バシャログ。 にある gitlab-ci-multi-runner のインストールとGitLabへのrunner登録は導入済みとします。
プロジェクトの準備
リポジトリを作成したら、Settings > CI/CD Pipelines にて、docker runner の「Enable for this project」ボタンをクリックして有効化します。
CakePHPアプリの新規作成
以下のようにCakePHPアプリを作って、リモートリポジトリにpushします。
$ cd path/to/projects
$ composer create-project --prefer-dist cakephp/app cakeapp
$ cd cakeapp
$ git init
$ git add -A
$ git commit -m "create CakePHP app"
$ git remote add origin ssh://git@gitlab.example.com/ktanaka/cakeapp-ci-sample.git
$ git push origin master
ユニットテストできるようにする
PHPUnit,cakephp-codesniffer を追加します。
$ composer require --dev phpunit/phpunit:"^5.7|^6.0"
$ composer require --dev cakephp/cakephp-codesniffer:"^3.0"
$ git add composer.json composer.lock
$ git commit -m "Require PHPUnit, cakephp/cakephp-codesniffer(For Dev)"
composer run-script check
を実行すると、ユニットテストとphpcs
によるコーディングスタイルチェックが実行されます
$ composer run-script check
> phpunit --colors=always
PHPUnit 5.7.20 by Sebastian Bergmann and contributors.
...... 6 / 6 (100%)
Time: 482 ms, Memory: 17.25MB
OK (6 tests, 34 assertions)
> phpcs --colors -p --standard=vendor/cakephp/cakephp-codesniffer/CakePHP ./src ./tests
...........
Time: 590ms; Memory: 11Mb
GitLab CI でテスト実行する
これをGitLab CI で実行できるようにします。
以下の .gitlab-ci.yml
ファイルをコミットします。
before_script:
- php -v
- apt-get update -yqq > /dev/null
- apt-get install libmcrypt-dev libicu-dev zlib1g-dev -yqq > /dev/null
- docker-php-ext-install mcrypt intl zip opcache > /dev/null
- curl -sS https://getcomposer.org/installer | php > /dev/null
- php composer.phar install --dev --no-interaction
cache:
paths:
- ~/.composer/
- vendor/
check:php7.1:
image: php:7.1
script:
- php composer.phar run-script check
コミット、プッシュします。
$ git add .gitlab-ci.yml
$ git commit -m "add CI Config"
$ git push
Pipelines にアクセスすると、テスト結果を以下のように閲覧できます。
コンソールカラーも反映してくれて、イイ感じですね。
まとめ
新規に作成したCakePHP プロジェクトをGitLab CI でテストする手順を説明しました。 データベースを使ったテストについては別途紹介したいと思います。