Bitbucket 파이프라인 작곡가 캐시 디렉토리가 비어 있습니다 🤷‍♂️

TL;DR: composer saved cache in different directory then Bitbucket's predefined composer cache location. Adding COMPOSER_HOME=~/.composer before the composer install fixed the issue.



우리 회사에서는 Bitbucket을 Git 호스팅 서비스로 사용하고 있습니다. 또한 CI/CD 자동화를 위한 파이프라인 기능을 사용합니다. 모든 것이 훌륭하고 멋지게 실행되었지만 잠시 후 나는 작은 문제를 발견했습니다.

파이프라인의 마지막 단계는 빌드 분해 프로세스로, 빌드 사이에서도 saves cache 더 빠른 빌드를 제공하고 소비된 빌드 시간(분)을 줄입니다. bitbucket-pipelines.yml 파일은 다음과 같습니다.

image: funky-org/bitbucket-pipelines-php

pipelines:
  default:
    - step:
        name: Run unit tests
        caches:
          - composer
        script:
          - composer install --no-progress
          - ./vendor/bin/phpunit
          - ls -la ~/.composer/cache


우리는 PHP 종속성 관리자로 작곡가를 사용하고 있으며 이미지는 php:7.4-cli 을 기반으로 합니다.

파이프라인이 composer install를 실행할 때 캐시는 documentation을 기반으로 ~/.composer/cache 디렉토리에 저장되어야 합니다. Bitbucket의 사전 정의된composer 캐시 위치도 ~/.composer/cache이므로 Build 분해는 나중에 사용할 수 있도록 Bitbucket에 캐시를 저장해야 합니다. 하지만 그 디렉토리는 비어있었습니다 🧐.

다음 명령을 실행하고 스크립트를 수동으로 실행하여 내 컴퓨터에서 이 문제를 로컬로 재현했습니다.

docker run --rm -it -v ${PWD}:/app funky-org/bitbucket-pipelines-php bash


캐시가 ~/.cache/composer 에 저장되었음을 알았습니다. 따라서 파이프라인이 저장할 캐시 파일을 찾지 못한 이유입니다.

내가 한 솔루션은 COMPOSER_HOME 환경 변수를 수동으로 지정하여 작곡가가 Bitbucket의 미리 정의된composer 캐시 위치에 캐시를 저장하도록 하는 것이었습니다. 최종 yml 파일은 다음과 같습니다.

image: funky-org/bitbucket-pipelines-php

pipelines:
  default:
    - step:
        name: Run unit tests
        caches:
          - composer
        script:
          - COMPOSER_HOME=~/.composer composer install --no-progress
          - ./vendor/bin/phpunit
          - ls -la ~/.composer/cache


이 글이 누군가에게 저처럼 많은 시간을 허비하지 않는 데 도움이 되었으면 합니다 😆

좋은 웹페이지 즐겨찾기