github+TravisCIによるLaravelのCIを行う。
https://travis-ci.com/
※travis-ci.orgもあるが、そちらは旧版なので.comの方を利用する
language: php
php:
- 7.3
services:
- mysql
before_script:
- cp .env.travis .env
- mysql -u root -e "CREATE DATABASE IF NOT EXISTS blog;"
- composer self-update
- composer install --no-interaction
- php artisan config:clear
- php artisan view:clear
- php artisan key:generate
- php artisan config:cache
- php artisan migrate --no-interaction -vvv
script:
- ./vendor/bin/phpunit
after_success:
- bash <(curl -s https://codecov.io/bash) -cF php
設定ファイルのキャッシュをしている場合、.envがロードされないのでキャッシュをクリアする
php artisan config:clear
APP_KEYを自動生成する(生成しないと「No application encryption key has been specified.」エラーになる)
php artisan key:generate
※APP_KEYは、セッションや認証機能の暗号化に利用されている?
https://qiita.com/yk2220s/items/dcbf54c6d1f33a0cb06f
ビューのキャッシュをクリアする
php artisan view:clear
参考:
https://dragon-taro.com/college/post-613
mysqlの利用方法は、travisciの公式ドキュメントで説明があります。
ユーザー名travisまたはrootと空のパスワードを使用して接続してください。
https://docs.travis-ci.com/user/database-setup/
※mysqlの設定情報もキャッシュされている
- https://dragon-taro.com/college/post-613
- travis.ymlをgithubでpush,pullrequestすると設定したスクリプトが自動で走る
- 環境変数をtravisci用の設定ファイルを作る
-
mysqlの利用方法は、travisciの公式ドキュメントで説明があるのでこれを参照:https://docs.travis-ci.com/user/database-setup/
- travisci上でphpunit実行されると、General error: 1 no such table: usersになる(travisci上で
- php artisan migrateは走っていてusersテーブルは生成されているように見える
- 作っていたmigrateファイルだとusersテーブルがもしかして生成されない?と思ってテーブル全部消してローカルでphp artisan migrateしてみるも問題なく生成されるので、そっちも問題なさそう
- Laravelのtravisci設定例:https://dev.to/nahuelhds/basic-travis-ci-configuration-for-laravel-4k8c
- テーブル一覧をコントローラで表示してみるもテーブルが全く生成されていない
- $tableList = DB::connection()->getDoctrineSchemaManager()->listTableNames();
- https://qiita.com/ucan-lab/items/f4cabe23ea5f78847a0e
- 設定ファイルのキャッシュが行われている?と思ったので「php artisan config:cache」を追加
- 設定ファイルがキャッシュされると、.envファイルはロードされない
- 設定ファイルのキャッシュは、bootstrap/cache/config.phpに生成される
- 「php artisan key:generate」で生成されるAPP_KEYに関してもキャッシュに保存される為、先に「php artisan config:clear」しておく
- mysqlの接続情報もキャッシュされる
- APP_ENV:環境によって異なる処理を行わせたい場合に利用
-