前提
今回は前回の記事にCircleCIを組み込んでいきます。
DockerでLEMP環境を構築する
テストを作成する
# Laravelプロジェクト内でテスト用の.envファイルを作成する
cp .env.example .env.testing
# APP_KEYを作成する
php artisan key:generate --env=testing
.env.testingへ下記を記載する
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel-test
DB_USERNAME=root
DB_PASSWORD=
テストコードを作成する
php artisan make:test HogeTest
下記などを参考にPHPUnitでテストを記述する
https://qiita.com/tsuuuuu_san/items/46246168dc36ad2369cc
https://qiita.com/nakano-shingo/items/9446568a2f9e903922d4
作成したテストをCircleCI上で実行できるように設定情報を追記する
config/database.phpの'connections'に下記を追記する
'circle_testing' => [
'driver' => 'mysql',
'host' => '127.0.0.1',
'port' => '3306',
'database' => 'circle_test',
'username' => 'root',
'password' => '',
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
],
CircleCIへログインする
アカウントがない場合GitHub連携で簡単に作成できます。
Projectsへ遷移するとGitHubのリポジトリが表示されるので設定したいプロジェクトのSet UP Projectボタンを押下する(開発言語など問われるので適宜選択する)
CircleCIの設定ファイルを作成する
【ルートディレクトリ】へ移動して.circleci/config.ymlを作成する
mkdir .circleci && touch .circleci/config.yml
.circleci/config.ymlに下記のように設定を記載する
version: 2 # 設定ファイルのバージョン
jobs: # 実行させたいジョブの定義
build: # ジョブ名を定義する
docker: # ジョブを実行するマシンを定義
# CircleCIのイメージを使用
- image: circleci/php:7.3.0-node-browsers
- image: circleci/mysql:5.7
environment:
- DB_CONNECTION: circle_testing
working_directory: ~/CI-test
steps: # マシンに対しての命令手順
- checkout # コードをレポジトリからチェックアウト
- run: # コマンドを実行
name: Update apt-get
command: sudo apt-get update
- run:
name: Docker php extensions install
command: sudo docker-php-ext-install pdo_mysql
- restore_cache:
keys:
- v1-dependencies-{{ checksum "src/composer.json" }}
- v1-dependencies-
- run:
name: Install PHP libraries
working_directory: src
command: composer install -n --prefer-dist
- save_cache:
paths:
- ./vendor
key: v1-dependencies-{{ checksum "src/composer.json" }}
- run:
name: Run PHPUnit
working_directory: src
command: vendor/bin/phpunit
# 定義したジョブを実行するタイミングを定義できる
# 未定義だとGitプッシュがトリガーになり実行される
workflows:
version: 2
builid_workflow: # ワークフロー名を定義する
jobs: # どのJOBを実行するか
- build
テストを自動で実行する
GitHubにコミット/プッシュする。
CircleCIのセットアップ画面へアクセスしてStart buildingをクリックするとビルド画面へ遷移する。
すると...
無事テストが走り、テスト結果が表示されました!
次回からはGitHubにコミット/プッシュしたタイミングで自動でテストが走るようになります(.circleci/config.ymlのworkflowsでタイミングは変更できます。)