Laravel+MySQLプロジェクトのPHPUnitをCircleCIで回す
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を選択します。
自動テストや諸々が走るのを確認して導入完了です。