はじめに
人生って大変ですね。プログラマ辞めてワルキューレに入りたいです。
Laravel
でphanを回すって記事はそこそこあるし、 師tadsanのデカルチャーな記事 など当たれば phan
について大体わかると思いますが、 CircleCI 2.0
と組み合わせるとなると全然見当たらなかったので頑張りました。
phan
と phpunit
をCIで回すと快適に夜眠れるので安心して眠ることができるので回すことをおすすめします。
コード抜粋
version: 2
jobs:
build:
docker:
- image: circleci/php:7.1-node-browsers
- image: circleci/mysql:5.7
environment:
- APP_DEBUG: true
working_directory: ~/repo
steps:
- checkout
- run: sudo apt-get install -y libzip-dev libpng-dev libsqlite3-dev
- run: sudo docker-php-ext-install pdo_mysql zip
- run:
name: Install php-ast
command: |
cd ~
git clone https://github.com/nikic/php-ast
cd php-ast
phpize
./configure
make
sudo make install
echo -e "extension=ast.so" | sudo tee /usr/local/etc/php/php.ini > /dev/null
- restore_cache:
keys:
- v1-dependencies-{{ checksum "composer.json" }}
- v1-dependencies-
- run: cd ~/repo
- run: composer install -n --prefer-dist
- save_cache:
paths:
- ./vendor
key: v1-dependencies-{{ checksum "composer.json" }}
- run: composer phan
workflows:
version: 2
build-and-deploy:
jobs:
- build
- deploy:
requires:
- build
filters:
branches:
only: /^develop$|^staging$/
雑に解説
php
は CircleCI
側が用意してくれてるdockerを使えば楽チンに入りました楽勝!
name: Install php-ast
の部分がめんどくさかったです。phan
には php-ast
extensionが必要なのですが、良いやり方がなかったのでとりあえず make
して php.ini
に extension=ast.so
を追加するように書きました。
docker image
を作ってる方もいらっしゃいますが、なるべく circleci
が提供してる docker image
に合わせたかったのでこういう風にしました。
おわり
もっといいやり方、ここちげーよ、などあればコメントください。