在Google Cloud Build中缓存Yarn与Pip依赖以缩短构建时长
在Google Cloud Build中缓存Yarn与Pip依赖以缩短构建时长
当然可以通过缓存Yarn和Pip的依赖包来大幅压缩你的构建时间!10分钟的构建时长确实有很大优化空间,我来帮你调整Cloud Build配置,把缓存逻辑加进去——这样只要你的依赖锁文件(yarn.lock/requirements.txt)没变化,构建时就不用重新下载所有依赖了。
核心优化思路
Cloud Build支持远程持久化缓存,可以把Yarn和Pip的依赖缓存存储在Google Cloud Storage中,跨构建节点复用。我们要做的就是:
- 告诉Cloud Build要缓存哪些路径
- 在构建步骤中让Yarn/Pip使用这些缓存路径
修改后的完整Cloud Build配置
cache: # 配置远程缓存,将依赖缓存存储到GCS(默认会创建专属存储桶) storage: GCS paths: - /builder/home/.cache/yarn - /builder/home/.cache/pip steps: - name: "node:18.17.1" entrypoint: bash args: - "-c" - | # 用--frozen-lockfile确保yarn.lock不变时不会重新解析依赖 yarn install --frozen-lockfile yarn run create-app-yaml yarn build env: - redacted # 挂载缓存卷到Yarn的默认缓存目录 volumes: - name: yarn-cache path: /builder/home/.cache/yarn - name: "python:3.10.11" entrypoint: bash args: - "-c" - | # 先升级pip到最新版,避免兼容性问题 python -m pip install --upgrade pip # 指定使用缓存目录来存储已下载的包 python -m pip install --cache-dir /builder/home/.cache/pip -r requirements.txt python ./manage.py collectstatic --noinput # 挂载缓存卷到Pip的缓存目录 volumes: - name: pip-cache path: /builder/home/.cache/pip - name: "gcr.io/cloud-builders/gcloud" args: ["app", "deploy"] timeout: "1600s"
关键优化点说明
- Yarn缓存:
- 使用
--frozen-lockfile参数,强制Yarn严格按照yarn.lock的内容安装,避免不必要的依赖解析 - 缓存Yarn的默认缓存目录
/builder/home/.cache/yarn,这里存储了所有已下载的包压缩包,下次安装直接复用
- 使用
- Pip缓存:
- 先升级Pip到最新版,确保缓存逻辑正常工作
- 通过
--cache-dir指定Pip的缓存路径,让已下载的包存在这里,下次安装无需重新下载
- 远程缓存存储:
- 配置
cache.storage: GCS让Cloud Build把缓存内容存在GCS桶中,跨所有构建节点共享,即使更换构建机器也能用上缓存
- 配置
额外小建议
- 确保你的代码仓库里已经提交了
yarn.lock和requirements.txt文件——这两个文件是缓存生效的关键,只有当它们变化时,Yarn/Pip才会重新下载新的依赖 - 首次构建时缓存还未生成,时长不会有明显变化,但从第二次构建开始,依赖安装步骤的时间会大幅缩短(预计能把5+5分钟的依赖安装时间压缩到几十秒)
备注:内容来源于stack exchange,提问作者BlueBeret
相关产品推荐
相关产品推荐

