CircleCI 2.0で「composer: command not found」エラーが出た場合の対処法
CircleCI 2.0でPHPのプロジェクトを追加して、デフォルトのconfig.ymlでbuildしたところ、 composerの実行でエラーになったときのメモです。
現象
ADD PROJECTSメニューからCIしたいリポジトリを選択して、「Set Up Project」画面に移動します。
言語はPHPだったのでPHPを選択しページ下部に表示されるCircleCIの実行時の設定ファイルのサンプルを使ってビルドしたところ、composerが動作しませんでした…(2018/04/23時点)
デフォルトのサンプルは以下のとおりです。
# PHP CircleCI 2.0 configuration file
#
# Check https://circleci.com/docs/2.0/language-php/ for more details
#
version: 2
jobs:
build:
docker:
# specify the version you desire here
- image: circleci/php:7.1.5-browsers
# Specify service dependencies here if necessary
# CircleCI maintains a library of pre-built images
# documented at https://circleci.com/docs/2.0/circleci-images/
# - image: circleci/mysql:9.4
working_directory: ~/repo
steps:
- checkout
# Download and cache dependencies
- restore_cache:
keys:
- v1-dependencies-{{ checksum "composer.json" }}
# fallback to using the latest cache if no exact match is found
- v1-dependencies-
- run: composer install -n --prefer-dist
- save_cache:
paths:
- ./vendor
key: v1-dependencies-{{ checksum "composer.json" }}
# run tests!
- run: phpunit
これをリポジトリ直下の .circleci/config.yml
として配置しpushしビルドを走らせます。
すると composer install -n --prefer-dist
で以下のエラーになりました。
#!/bin/bash -eo pipefail
composer install -n --prefer-dist
/bin/bash: composer: command not found
Exited with code 127
解決方法
調べて見ると CircleCIのフォーラム に同じような投稿がありました。
どうやらsample.ymlには CircleCIが推奨するDocker Imageではないイメージが記載 されているのが原因のようです。
上記ページの回答どおりにimageを circleci/php:latest
を指定することで対処しました。これでcomposerのエラーは出なくなりました。
- image: circleci/php:latest
latestに変更してpushしましたが今度はPHPUnitのエラーが出ます。
#!/bin/bash -eo pipefail
phpunit
/bin/bash: phpunit: command not found
Exited with code 127
phpunitが読み込めていないようなので
- run: vendor/bin/phpunit
と変更することでビルドが全て通るようになりました!
以下が変更後のconfig.ymlです。
# PHP CircleCI 2.0 configuration file
#
# Check https://circleci.com/docs/2.0/language-php/ for more details
#
version: 2
jobs:
build:
docker:
# specify the version you desire here
- image: circleci/php:latest # ★変更した
# Specify service dependencies here if necessary
# CircleCI maintains a library of pre-built images
# documented at https://circleci.com/docs/2.0/circleci-images/
# - image: circleci/mysql:9.4
working_directory: ~/repo
steps:
- checkout
# Download and cache dependencies
- restore_cache:
keys:
- v1-dependencies-{{ checksum "composer.json" }}
# fallback to using the latest cache if no exact match is found
- v1-dependencies-
- run: composer install -n --prefer-dist
- save_cache:
paths:
- ./vendor
key: v1-dependencies-{{ checksum "composer.json" }}
# run tests!
- run: vendor/bin/phpunit # ★変更した
ビルドがとおって良かった良かった。
CircleCIでPHPプロジェクトを扱う場合config.ymlの設定にご注意ください
Author And Source
この問題について(CircleCI 2.0で「composer: command not found」エラーが出た場合の対処法), 我々は、より多くの情報をここで見つけました https://qiita.com/pinekta/items/0a28caf54292ae3bfd0e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .