CircleCIでLaravel[MySQL]とPHPUnitの自動化

2020年4月27日

CircleCIを利用してLaravelのPHPUnitによるデータベースと絡んだ簡単なテスト自動化をおこなってみます。リモートリポジトリはGitHubを利用します。

 

 

Laravelプロジェクトの準備


 

Laravelの適当なプロジェクトを作成し、PHPUnitの準備をします。ここでの項目の説明はCircleCIとは直接関係ないので不必要な方は飛ばして下さい。今回はデータベース(MySQL)を利用した簡単なテストを想定しています。Laravelのテストに関する説明は関連ページをご覧下さい。

 

Laravel PHPUnitでテスト入門

 

モデルとマイグレーションファイルを作成します。

 

マイグレーションファイルを下記のように編集します。titleとauthorカラムを持つbooksテーブルを生成します。

 

database/migrations/2020_04_27_070910_create_books_table.php

 

 

テスト用のデータベースを作成しておきます。本記事ではあらかじめ「test_sample01」という名前のデータベースを作成しておきます。.env をコピーして .env.testing を作成し、下記のように編集します。

 

次にphpunit.xmlを編集します。

 

「–env=testing」オプションを付与し、マイグレーションを実行します。

 

テストコードを記述するファイルを作成し、下記のように編集します。

 

tests/Feature/Database/DatabaseTest.php

テスト用データベースに値を保存できるかを確認しています。

 

 

CircleCI


 

今回はGitHubに「laravel-project」という名前のリポジトリを用意し、上記で説明したLaravelのプロジェクトをあらかじめpushしておきます。

 

CircleCIへはGitHubアカウントで登録します。ログインするとProjects画面において、GitHubで作成したリポジトリが表示されているのが確認できます。

 

 

 

CircleCIでの「Set Up Project」操作の前に、Laravelプロジェクトのルートディレクトリに.circleciディレクトリを作成し、そのディレクトリ内にconfig.ymlファイルを作成します。

 

config.ymlを下記のように編集します。

 

Laravelのプロジェクト/.circleci/config.yml

4〜16行目

– imageにはプロジェクトをビルドする際のDockerイメージを指定します。circleci/〜はCircleCIが用意したイメージです。environmentには環境変数を指定します。

 

24〜34行目

CircleCIにはキャッシュ機能があります。上記コードでは29行目のcomposerによるパッケージのインストール処理を挟むことにより実現しています。restore_cacheは、composer.lockが変更されていない場合に発動します。save_cacheではcomposer.lockに基づきキャッシュを保存します。

 

 

 

config.ymlの準備が完了したら、GitHubリポジトリにpushしておきます。

 

CircleCIのProjects画面(上述で記載した画面)で「Set Up Project」をクリックすると、下記画面に変わるのでそのまま「Start Building」をクリックします。

 

 

「Add Manually」を選択します。

 

 

「Start Building」をクリックします。

 

 

 

下記のような画面に切り替わり、「SUCCEEDED」と表示されたら成功です。

 

 

「SUCCEEDED」をクリックし遷移した画面内で「build」を更にクリックすると、実行の様子を確認できます。

 

 

 

関連ページ

Laravel(EC2)CircleCIによるデプロイ(deploy)の自動化

 

 

参照ページ


 

言語ガイド:PHP

 

 

 

LINEで送る
Pocket

おすすめ本
定期本
 
Copyright © 2020 思考の葉 All Rights Reserved.  プライバシーポリシー