BitBucket 管道未使用缓存进行 npm 安装

BitBucket pipeline is not using cache for npm install

我有一个 BitBucket 存储库,其中包含 ui 文件夹中的 Angular 应用程序代码和 api 文件夹中的节点 API 代码。

我的 BitBucket 管道为 Angular 应用程序运行 ng test,但是 node_modules 文件夹没有被正确缓存。

这是我的 BitBucket 管道 yml 文件:

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 步骤时,它说:

added 1623 packages in 41.944s

我正在尝试加快构建速度,但我无法弄清楚为什么 npm 需要安装依赖项,假设它们已经包含在已恢复的缓存中。

我的猜测是,您的缓存位置不正确。 有一个可以激活的 pre-configured 节点缓存(名为 "node")。不需要为此做一个自定义缓存。(默认缓存失败,因为你的节点构建在克隆目录的子文件夹中,所以你需要一个自定义缓存)

缓存位置是相对于克隆目录的。 bitbucket 克隆到 /opt/atlassian/pipelines/agent/build 这可能就是为什么你的绝对 cache-path 不起作用。

只需将缓存引用设为相对就可以了

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

这可能会解决您的问题