Конвейер BitBucket не использует кеш для установки npm

У меня есть единственный репозиторий BitBucket, содержащий код для приложения Angular в папке с именем ui и API узла в папке с именем api.

Мой конвейер BitBucket работает ng test для приложения Angular, но папка node_modules кэшируется неправильно.

Это мой yml-файл BitBucket Pipeline:

image: trion/ng-cli-karma

pipelines:
  default:
    - step:
        caches:
          - angular-node
        script:
          - cd ui
          - npm install
          - ng test --watch=false

definitions:
  caches:
    angular-node: /ui/node_modules

Когда сборка запускается, он показывает:

Cache "angular-node": Downloading
Cache "angular-node": Extracting
Cache "angular-node": Extracted

Но когда он выполняет шаг npm install, он говорит:

добавил 1623 пакета за 41.944s

Я пытаюсь ускорить сборку и не могу понять, почему npm необходимо устанавливать зависимости, если они уже содержатся в восстановленном кеше.


person infojolt    schedule 19.03.2018    source источник


Ответы (1)


Я предполагаю, что ваша позиция в кеше неверна. есть предварительно сконфигурированный кеш узла (названный «узел»), который можно просто активировать. нет необходимости создавать для этого настраиваемый кеш. (кеш по умолчанию не работает, потому что сборка вашего узла находится в подпапке каталога клонирования, поэтому вам нужен настраиваемый кеш)

позиции кэша относятся к каталогу клонов. bitbucket клонирует в /opt/atlassian/pipelines/agent/build, вероятно, поэтому ваш абсолютный путь кеширования не работал.

простое создание относительной ссылки кеша должно помочь

pipelines:
  default:
    - step:
        caches:
        - angular-node
        script:
        - cd ui
        - npm install
        - ng test --watch=false
definitions:
  caches:
    angular-node: ui/node_modules

это может решить вашу проблему

person Laures    schedule 06.04.2018
comment
Предварительно настроенный кеш не смотрит в node_modules, а не во вложенную папку? - person infojolt; 06.04.2018
comment
после прочтения документации (confluence.atlassian.com/bitbucket/ ) Я думаю, что ваш первоначальный подход был правильным, но вы должны использовать относительный путь (взять ведущий / прочь), поскольку ваш путь клонирования не находится на верхнем уровне. кэш узлов по умолчанию не работает, потому что ваш проект использует подпапку. я обновлю свой ответ - person Laures; 12.04.2018