Laravel+MySQLプロジェクトのPHPUnitをCircleCIで回す

d yoshikawa
Crunchtimer
Published in
3 min readDec 28, 2018

社内へのCI布教も兼ねて書きます。
内容は掲題の通りです。

CIを整備することにより、

  • テスト実行の自動化 (テストの通ってないマージ等を確実に検知)
  • テスト実行環境の統一化 (俺の環境で動いた/動かないの排除)
  • デプロイの自動化&デプロイ手順のコード化 (開発フローの効率化・属人性の排除)

等のメリットが期待できます。

CIサービスはTravisと並んでメジャーどころであるCircleCIを使います。

完成形のサンプルリポジトリを上げています。

CircleCIを動かすには、

  • Dockerイメージ
  • .circleci/config.ymlファイル

を用意する必要があります。

今回、Dockerイメージは下記の自作イメージを使っています。

https://hub.docker.com/r/dyoshikawa/laravel/

https://hub.docker.com/r/dyoshikawa/mysql/

config.ymlファイルは下記のように組みました。

いくつか解説すると、

  • LaravelコンテナとMySQLコンテナを立ち上げて連携させています。
  • Dockerizeというツールを使ってMySQLの起動を待った後にDBマイグレーションを実行しています。
  • APP_KEYは同じものを本番で用いない限り危険はないと考え、ベタ書きしています。
  • buildジョブは全てのブランチで実行、deployジョブはmasterブランチのみ実行するようにworkflowsで定義しています。

以上が要点となります。

.circleci/config.ymlを含んだソースをmasterブランチにpushしたら、あとはcircleci側で動くようにするだけですね。

使用しているGitホスティングサービスからログインします。
弊社はBitbucketです。

ログイン後はメニューのADD PROJECTSから対象のリポジトリを選択し、START BUILDINGを選択します。

自動テストや諸々が走るのを確認して導入完了です。

--

--