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 시점)



기본 샘플은 다음과 같습니다.

sample.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: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 오류가 발생하지 않습니다.

config.yml
      - image: circleci/php:latest

latest로 변경하고 push했지만 이번에는 PHPUnit 오류가 발생합니다.
#!/bin/bash -eo pipefail
phpunit
/bin/bash: phpunit: command not found
Exited with code 127



phpunit이로드되지 않은 것 같습니다.

config.yml
      - run: vendor/bin/phpunit

로 변경하여 빌드가 모두 통과하게 되었습니다!

다음은 변경 후 config.yml입니다.

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 설정에 유의하십시오.

좋은 웹페이지 즐겨찾기