2018-10-25に更新

WerckerでLaravel5.6+PHP7のCI

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

Werckerで使っている設定の解説

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開発者

Crieitの開発者です。 主にLAMPで開発しているWebエンジニアです(在宅)。大体10年程。 記事でわかりにくいところがあればDMで質問していただくか、案件発注してください。 業務依頼、同業種の方からのコンタクトなどお気軽にご連絡ください。 業務経験有:PHP, MySQL, Laravel5, CakePHP3, JavaScript, RoR 趣味:Elixir, Phoenix, Node, Nuxt, Express, Vue等色々

Crieitはαバージョンで開発中です。進捗は公式Twitterアカウントをフォローして確認してください。 興味がある方は是非記事の投稿もお願いします! どんな軽い内容でも嬉しいです。
なぜCrieitを作ろうと思ったか
関連記事

コメント