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
4

1 回答 1

2

我很确定你是正确的,这是 CircleCI Docs 中的一个错字。我已经打开了一个 PR 来修复:https ://github.com/circleci/circleci-docs/pull/2663

于 2018-08-31T01:34:16.087 回答