bundle clean如何适合CircleCI缓存?

问题描述 投票:1回答:1

CircleCI文档包含一些关于为什么在涉及缓存时应该运行bundle clean的信息,但我很难理解如何。我对Bundler (Ruby)部分中的代码块感到困惑:https://circleci.com/docs/2.0/caching/#bundler-ruby

有问题的代码块是:

- run: bundle install & bundle clean
- restore_cache:
    keys:
      # when lock file changes, use increasingly general patterns to restore cache
      - v1-gem-cache-{{ arch }}-{{ .Branch }}-{{ checksum "Gemfile.lock" }}
      - v1-gem-cache-{{ arch }}-{{ .Branch }}-
      - v1-gem-cache-{{ arch }}-
- save_cache:
    paths:
      - ~/.bundle
    key: v1-gem-cache-{{ arch }}-{{ .Branch }}-{{ checksum "Gemfile.lock" }}

我正在阅读这个过程:

  • 在缓存到位之前运行bundle install(恢复缓存之前的完整gem安装时间,否定缓存的省时优势)然后运行bundle clean
  • 通过已安装的gem恢复缓存
  • 不要做任何事情(在restore_cachesave_cache步骤之间)
  • 保存新缓存

我是否正确理解了这个过程?

这看起来像restore_cachesave_cache步骤不会有效,因为完整的bundle install时间已经花了。

如果我理解的话,这会是一个更有效的过程吗?

- restore_cache:
    keys:
      # when lock file changes, use increasingly general patterns to restore cache
      - v1-gem-cache-{{ arch }}-{{ .Branch }}-{{ checksum "Gemfile.lock" }}
      - v1-gem-cache-{{ arch }}-{{ .Branch }}-
      - v1-gem-cache-{{ arch }}-
- run: bundle install & bundle clean
- save_cache:
    paths:
      - ~/.bundle
    key: v1-gem-cache-{{ arch }}-{{ .Branch }}-{{ checksum "Gemfile.lock" }}

如果我没有正确理解这一点,任何人都可以帮助澄清建议的代码块是如何工作的吗?

更新:它看起来也像

- run: bundle install & bundle clean

需要修改为

- run: bundle install && bundle clean
circleci circleci-2.0
1个回答
2
投票

我很确定你是对的,这是CircleCI Docs中的一个错字。我已经开了一个公关来解决:https://github.com/circleci/circleci-docs/pull/2663

© www.soinside.com 2019 - 2024. All rights reserved.