BitBucket+WerckerでLaravel5のCI でも書いたとおり、BitBucket+Werckerを利用することでLaravel5のCIを無料で簡単に行うことができます。
ただ、上記の内容だと最新のLaravel5.6(PHP7)には対応していないため、対応したものでCIできるようにしてみました。
下記が設定のためのwercker.ymlになります。
box: dala00/laravel
services:
- id: mysql
tag: 5.7
env:
MYSQL_ALLOW_EMPTY_PASSWORD: "true"
MYSQL_DATABASE: test
build:
steps:
- script:
name: Install dependencies
code: |
composer install
- script:
name: Fill mysql env.
code: |-
sudo sed -i -e "s/DB_HOST=mysql/DB_HOST=$MYSQL_PORT_3306_TCP_ADDR/g" .env.testing
sudo sed -i -e "s/DB_PORT=3306/DB_PORT=$MYSQL_PORT_3306_TCP_PORT/g" .env.testing
- script:
name: Run phpunit
code: |-
vendor/bin/phpunit
box: dala00/laravel
僕が作ったイメージです(7.2。タグ付けは忘れているようです)。/var/www/app
にプロジェクトが入っています。ちょっとしたものは大体動くのでこれで問題ない気がします(どうしてもちょうどいいイメージが見つからないため…)。
- id: mysql
tag: 5.7
mysql8が入るとパスワードのプラグインが違う関係でWerckerのCI時に接続ができません。仕方がないのでtagで5.7を指定しています。(恐らく今後イメージ側かWercker側で対処してくれるとは思うのですが…)
sudo sed -i -e "s/DB_HOST=mysql/DB_HOST=$MYSQL_PORT_3306_TCP_ADDR/g" .env.testing
sudo sed -i -e "s/DB_PORT=3306/DB_PORT=$MYSQL_PORT_3306_TCP_PORT/g" .env.testing
Laravel5.6のテストの場合はphpunit.xmlで指定されている環境変数であるAPP_ENV=testing
が使われるため、.env.testing
が優先的に使用されます。また、WerckerはDBのIPがMYSQL_PORT_3306_TCP_ADDRで取得できるので、.env.testing
をその内容に置換します。置換前の文字列は適宜自分のものに置き換えてください。
こんな感じでWerckerにてLaravel5.6のCIが可能です。BitBucketを利用されている方は連携も非常に簡単ですので是非お試しください。
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント