LoginSignup
4
2

More than 5 years have passed since last update.

リポジトリ直下にcomposer.jsonがない場合でCircleCIでハマったこと

Last updated at Posted at 2017-09-20

GitHubにホスティングしているリポジトリとCircleCIを連携させようとしたところ、
リポジトリ直下にcomposer.jsonがなかったためハマりました…

CircleCIはリポジトリの直下にcomposer.jsonがあれば、
testの前にcomposer.jsonの内容で依存ライブラリをインストールしてくれるのだけれど、
そうではない場合は手動で実行させなくてはなりません。
だいたいのプロジェクトではリポジトリ直下にcomposer.jsonがあったけれど、
今回の自分が遭遇したケースではリポジトリの直下に複数のプロジェクトディレクトリがあって、
その中にcomposer.jsonがそれぞれあるケースでした。

いつもどおりcircle.ymlを書いたところphpcsがない・phpunitがないとエラーが出て、
色々ググったけれどなかなか情報がなかったので参考になれば幸いです。

circle.yml
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 することで解決します。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2