Кэширование данных в Google Cloudbuild - PullRequest
0 голосов
/ 01 октября 2019

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

Ответы [ 2 ]

1 голос
/ 01 октября 2019

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

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

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

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

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

0 голосов
/ 03 октября 2019

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

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