Google Cloud Build - Как кэшировать Базель? - PullRequest
1 голос
/ 02 февраля 2020

Я недавно начал использовать Cloud Build с Bazel. Итак, у меня есть база c cloudbuild.yaml

steps:
  - id: 'run unit tests'
    name: gcr.io/cloud-builders/bazel
    args: ['test', '//...']

, которая запускает все тесты моего проекта Bazel.

Но, как вы можете видеть из этого скриншота, каждая сборка занимает около 4 минут , хотя я не коснулся ни одного кода, который бы влиял на мои тесты.

build duration

Локальный запуск тестов в первый раз занимает около 1 минуты. Но выполнение тестов во второй раз с помощью кэша Bazels занимает всего несколько секунд.

Поэтому моя цель - использовать кэш Bazel с Google Cloud Build

Обновление

В соответствии с предложением Тьерри Фальво Я рассмотрел эти рекомендации . Таким образом я попытался добавить следующее к моему cloudbuild.yaml:

steps:
  - name: gcr.io/cloud-builders/gsutil
    args: ['cp', 'gs://cents-ideas-build-cache/bazel-bin', 'bazel-bin']

  - id: 'run unit tests'
    name: gcr.io/cloud-builders/bazel
    args: ['test', '//...']

  - name: gcr.io/cloud-builders/gsutil
    args: ['cp', 'bazel-bin', 'gs://cents-ideas-build-cache/bazel-bin']

Хотя я создал корзину и папку, я получаю эту ошибку:

CommandException: No URLs matched

cloud build error

1 Ответ

2 голосов
/ 02 февраля 2020

Я думаю, что вместо кэширования дискретных результатов (артефактов) вы хотите использовать GCS (облачное хранилище) в качестве базового удаленного кэша .

- name: gcr.io/cloud-builders/bazel
  args: ['test', '--remote_cache=https://storage.googleapis.com/<bucketname>', '--google_default_credentials', '--test_output=errors', '//...']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...