You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Google Cloud Build中成功归档Yarn全局目录以复用缓存

解决Google Cloud Build中Yarn缓存为空/目录找不到的问题

核心问题根源

你之前踩了两个坑:一是搞混了Yarn的全局包目录和依赖缓存目录——要加速构建的是依赖缓存目录,不是全局包目录;二是打包缓存时的路径逻辑错了,导致压缩包为空。

正确的cloudbuild.yaml配置方案

1. 先恢复已有缓存(如果存在)

从存储桶拉取缓存包,解压到Yarn的真实缓存目录:

steps:
  # 拉取缓存包到临时目录
  - name: 'gcr.io/cloud-builders/gsutil'
    args: ['cp', 'gs://你的存储桶名称/my-app-yarn-cache.tgz', '/tmp/yarn-cache.tgz']
    id: 'pull-cache'
    waitFor: ['-'] # 独立执行,不等待其他步骤

  # 解压缓存到Yarn指定的缓存目录
  - name: 'gcr.io/cloud-builders/bash'
    args:
      - '-c'
      - |
        if [ -f /tmp/yarn-cache.tgz ]; then
          # 先创建缓存目录,避免找不到路径
          mkdir -p $(yarn config get cacheFolder)
          # 解压时去掉顶层目录,直接把内容放到缓存目录里
          tar -xzf /tmp/yarn-cache.tgz -C $(yarn config get cacheFolder) --strip-components=1
        fi
    id: 'extract-cache'
    waitFor: ['pull-cache']

2. 安装项目依赖

此时Yarn会自动复用缓存,无需额外配置:

# 安装依赖,用--frozen-lockfile保证版本一致,缓存有效
  - name: 'node:18' # 换成你项目用的Node版本
    args: ['yarn', 'install', '--frozen-lockfile']
    id: 'install-deps'
    waitFor: ['extract-cache']

3. 归档新缓存到存储桶

安装完成后,把最新的缓存目录内容打包上传:

# 打包缓存目录里的所有内容(注意是内容,不是目录本身)
  - name: 'gcr.io/cloud-builders/bash'
    args:
      - '-c'
      - |
        tar -czf /tmp/yarn-cache-new.tgz -C $(yarn config get cacheFolder) .
    id: 'package-cache'
    waitFor: ['install-deps']

  # 上传新缓存到存储桶
  - name: 'gcr.io/cloud-builders/gsutil'
    args: ['cp', '/tmp/yarn-cache-new.tgz', 'gs://你的存储桶名称/my-app-yarn-cache.tgz']
    id: 'upload-cache'
    waitFor: ['package-cache']

关键注意事项

  • 认准cacheFolder:执行yarn config get cacheFolder能拿到真实的依赖缓存路径(默认是~/.cache/yarn),别再碰globalFolder——那是存全局安装包的,和项目依赖缓存无关。
  • 打包路径要正确:用-C $(yarn config get cacheFolder) .切换到缓存目录后打包内部内容,这样解压后不会多一层目录,Yarn能直接识别。
  • 提前创建目录:用mkdir -p确保缓存目录存在,彻底解决“找不到文件或目录”的报错。

验证方法

构建完成后,去存储桶下载my-app-yarn-cache.tgz解压,里面应该能看到各种依赖包的压缩文件和元数据。后续构建时,依赖安装步骤的耗时会明显缩短,说明缓存生效了。

内容的提问来源于stack exchange,提问作者Nate May

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 14:06:00