Почему я не могу переопределить тайм-аут в своем Google Cloud Build? - PullRequest
1 голос
/ 05 февраля 2020

Я пытаюсь настроить CI Pipeline с помощью Google Cloud Build.

Я пытаюсь развернуть приложение Meteor JS, которое имеет длительное время сборки - время сборки по умолчанию для GCB составляет 10 минут, и было рекомендовано здесь , чтобы увеличить время ожидания.

У меня есть файл cloudbuild.yaml с параметром timeout, увеличенным до 20 минут:

steps:
- name: 'gcr.io/cloud-builders/gcloud'
  args: ['app', 'deploy']
timeout: 1200s

У меня есть настройка триггера в GCB, подключенная к репозиторию Bitbucket, и когда я sh изменение и триггер срабатывает, я получаю 2 новые сборки - одну из Битбакета и другую, источник которой Google Cloud Storage.

По истечении 10 минут времени сборки сборка из облачного хранилища истекает, что приводит к сбою сборки Bitbucket, а также Error Response: [4] DEADLINE_EXCEEDED

Время от времени, по какой-либо причине, облако Сборка хранилища завершится sh менее чем за 10 минут, что позволит сборке Bitbucket завершиться и успешно развернуться sh.

Если я попытаюсь отменить / остановить сборку Cloud Storage, она также остановит сборку Bitbucket.

На скриншоте ниже показаны 2 попытки одной и той же сборки с разными результатами.

enter image description here

Я не понимаю, откуда взялась эта вторая сборка Cloud Storage, но на нее не влияют настройки в моем файле yaml или мои глобальные настройки GCP.

Я пытался запустить следующие команды из gcloud CLI:

gcloud config set app/cloud_build_timeout 1200
gcloud config set builds/timeout 1200
gcloud config set container/build-timeout 1200

Я также пытался использовать машину с высокой загрузкой процессора для ускорения процесса, но это не удалось Кажется, что-то влияет.

Буду очень признателен за любую информацию - я чувствую, что исчерпал каждую возможную комбинацию ключевых слов для поиска Google, которую я могу придумать!

1 Ответ

1 голос
/ 05 февраля 2020

Эта ошибка тайм-аута происходит из-за самого развертывания ядра приложения, которое по умолчанию имеет 10-минутный тайм-аут.

Вам потребуется обновить свойство app / cloud_build_timeout внутри самого контейнера следующим образом:

steps:
- name: 'gcr.io/cloud-builders/gcloud'
  entrypoint: 'bash'
  args: ['-c', 'gcloud config set app/cloud_build_timeout 1200 && gcloud app deploy']
timeout: 1200s

Обновление

На самом деле проще решение :

steps:
- name: 'gcr.io/cloud-builders/gcloud'
  args: ['app', 'deploy']
  timeout: 1200s
timeout: 1200s
...