Документы 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