Почему я не могу получить каталог папки кэширования composer в aws codebuild? - PullRequest
0 голосов
/ 23 апреля 2020

В моем проекте, чтобы ускорить сборку, я попытался кэшировать папку кэширования composer, используя следующую команду buildspec.yml:

version: 0.2

env:
  variables:
    COMPOSER_CACHE_DIR: "${CODEBUILD_SRC_DIR}/.cache/composer"

phases:
  install:
    commands:
      - apk add --update git
      - echo ${COMPOSER_CACHE_DIR}
      - mkdir -p ${COMPOSER_CACHE_DIR}
      - ls -l ${COMPOSER_CACHE_DIR}
  build:
    commands:
      - ls -l ${COMPOSER_CACHE_DIR}
      - ls -l vendor
      - composer install --no-dev --no-progress --no-suggest --optimize-autoloader
      - ls -l ${COMPOSER_CACHE_DIR}

artifacts:
  files:
    - app/**/*
    - bootstrap/**/*
    - config/**/*
    - database/**/*
    - machine/**/*
    - public/**/*
    - resources/**/*
    - routes/**/*
    - scripts/**/*
    - vendor/**/*
    - .env
    - appspec.yml
    - artisan
    - composer.json

cache:
  paths:
    - ${COMPOSER_CACHE_DIR}

Но как только сборка запускается, I ls -l ${COMPOSER_CACHE_DIR} после выполнения он показывает пустую папку:

[Container] 2020/04/23 07:28:43 Running command ls -l ${COMPOSER_CACHE_DIR}

total 0

Но после выполнения composer install заполняется COMPOSER_CACHE_DIR:

[Container] 2020/04/23 07:29:36 Running command ls -l ${COMPOSER_CACHE_DIR}
total 8
drwxr-xr-x   41 root     root          4096 Apr 23 07:29 files
drwxr-xr-x    3 root     root          4096 Apr 23 07:28 repo

Так что мне интересно, почему сборка кода не может заполнить папку COMPOSER_CACHE_DIR на этапе install? Я проверял S3, и файлы помещаются как ожидалось. Я также не установил срок хранения в своем кеше и использую собственное изображение docker вместо предоставленного amazon.

1 Ответ

2 голосов
/ 24 апреля 2020

Это связано с используемым форматом подстановки переменных или форматом путей кеша. Проверьте ниже для рабочего образца. При первом запуске ничего не будет в каталоге кеша, при втором запуске будут заполнены файлы:

version: 0.2

env:
  variables:
    COMPOSER_CACHE_DIR: .cache/composer

phases:
  install:
    commands:
      - ls -al .
      - ls -l .cache/composer
      - echo .cache/composer
      - mkdir -p .cache/composer
      - ls -l .cache/composer

  build:
    commands:
      - ls -l .cache/composer
      - touch .cache/composer/a.txt
      - touch .cache/composer/b.txt
      - pwd
      - ls -al

cache:
  paths:
    - .cache/composer/**/*
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...