GitHubにホスティングしているリポジトリとCircleCIを連携させようとしたところ、
リポジトリ直下にcomposer.jsonがなかったためハマりました…
CircleCIはリポジトリの直下にcomposer.jsonがあれば、
testの前にcomposer.jsonの内容で依存ライブラリをインストールしてくれるのだけれど、
そうではない場合は手動で実行させなくてはなりません。
だいたいのプロジェクトではリポジトリ直下にcomposer.jsonがあったけれど、
今回の自分が遭遇したケースではリポジトリの直下に複数のプロジェクトディレクトリがあって、
その中にcomposer.jsonがそれぞれあるケースでした。
いつもどおりcircle.ymlを書いたところphpcsがない・phpunitがないとエラーが出て、
色々ググったけれどなかなか情報がなかったので参考になれば幸いです。
machine:
timezone: Asia/Tokyo
php:
version: 7.1.6
dependencies:
cache_directories:
- path/to/.composer/cache
pre:
- composer config -g github-oauth.github.com $GITHUB_OAUTH_TOKEN
- echo "memory_limit = 2048M" > /opt/circleci/php/$(phpenv global)/etc/conf.d/memory.ini
override:
- composer install --dev --no-interaction --working-dir=path/to # ★ここ重要
test:
override:
- path/to/vendor/bin/phpunit
もしcomposer.jsonがリポジトリ名/path/to/composer.json
という場所にある場合、
composer installの実行時のオプションで--working-dir=path/to
で明示的にディレクトリを指定します。
こうすることで指定したディレクトリのcomposer.jsonを実行することができます。
普通にcomposer installまたはupdateする場合は何も考えずにcomposer.jsonのあるディレクトリまで移動してinstallまたはupdateしていましたが、いざディレクトリを移動せずに指定のcomposer.jsonでinstall・updateする場合はどうするんだろうとハマりましたが--working-dir=path/to
することで解決します。