Я хотел бы использовать Google Cloudbuild для выполнения интеграционных тестов. В настоящее время выполнение моих тестов занимает 30 минут. Основным узким местом является то, что тесты запрашивают большое количество данных из внешних источников. Я не против повторного использования одних и тех же данных каждый раз, когда я запускаю тесты. Есть ли способ кэшировать эти данные где-нибудь локально в Cloudbuild, чтобы они загружались намного быстрее?
Кэшировать данные в Google Cloudbuild
Ответы (3)
На странице https://github.com/ есть созданный cache
облачный конструктор. GoogleCloudPlatform / cloud-builders-community / tree / master / cache, которая упрощает функциональность кеширования в корзине GCS.
Я все еще хотел бы увидеть что-то более функциональное с более готовыми правилами кеширования, такими как Travis CI.
Единственный известный мне кеш в 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 в вашем проекте.
Вы можете сохранить статическую копию требований в папке в GCS и использовать rsync и внутреннюю пропускную способность GCP для извлечения файлов перед выполнением сборки. Это намного быстрее, чем получать их через Интернет. Просто добавьте шаг в начале сборки, как это.
- name: gcr.io/cloud-builders/gsutil
args: ['rsync', '-r', 'gs://my-cache-bucket/repository', 'local-cache-dir']