Как чистый пакет вписывается в кеш CircleCI? - PullRequest
0 голосов
/ 30 августа 2018

Документы 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 до , чтобы установить кэш (полное время установки гема до восстановления кэша, что сводит на нет преимущества экономии времени кеша), а затем выполните bundle clean
  • Восстановить кеш поверх установленных гемов
  • Не делать ничего (между restore_cache и save_cache шагами)
  • Сохранить новый кеш

Правильно ли я понимаю этот процесс?

Мне кажется, что restore_cache и save_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

1 Ответ

0 голосов
/ 31 августа 2018

Я почти уверен, что вы правы и что это опечатка в Документах CircleCI. Я открыл PR, чтобы исправить: https://github.com/circleci/circleci-docs/pull/2663

...