Кэшировать данные в Google Cloudbuild

Я хотел бы использовать Google Cloudbuild для выполнения интеграционных тестов. В настоящее время выполнение моих тестов занимает 30 минут. Основным узким местом является то, что тесты запрашивают большое количество данных из внешних источников. Я не против повторного использования одних и тех же данных каждый раз, когда я запускаю тесты. Есть ли способ кэшировать эти данные где-нибудь локально в Cloudbuild, чтобы они загружались намного быстрее?


person Community    schedule 01.10.2019    source источник


Ответы (3)


На странице https://github.com/ есть созданный cache облачный конструктор. GoogleCloudPlatform / cloud-builders-community / tree / master / cache, которая упрощает функциональность кеширования в корзине GCS.

Я все еще хотел бы увидеть что-то более функциональное с более готовыми правилами кеширования, такими как Travis CI.

person David Schmitt    schedule 25.09.2020
comment
Идеально! В данный момент я пытался что-то сделать сам, но, похоже, это уже существует! - person ThdK; 22.03.2021

Единственный известный мне кеш в Cloud Build - это кеш Kaniko, который позволяет для кеширования слоя вашего контейнера.

Cloud Build также имеет внутренний кеш для кэширования образа «построителя облака» (образ, который вы установили в name ваших шагов). Вы можете увидеть это в своих журналах Cloud Build:

Starting Step #0
Step #0: Already have image (with digest): gcr.io/cloud-builders/gcloud

Единственный способ, который я вижу, - это создать собственный контейнер «облачного конструктора». со всем вашим статическим файлом в нем. Cloud Build нужно загрузить только один раз, и он будет кэширован (я не знаю TTL). В любом случае загрузка с GCR будет очень быстрой.

Однако, когда ваши файлы изменяются, вам необходимо восстановить его. Это новый конвейер CI в вашем проекте.

person guillaume blaquiere    schedule 01.10.2019

Вы можете сохранить статическую копию требований в папке в GCS и использовать rsync и внутреннюю пропускную способность GCP для извлечения файлов перед выполнением сборки. Это намного быстрее, чем получать их через Интернет. Просто добавьте шаг в начале сборки, как это.

- name: gcr.io/cloud-builders/gsutil
  args: ['rsync', '-r', 'gs://my-cache-bucket/repository', 'local-cache-dir']
person Jaboy    schedule 03.10.2019