Развертывание приложения gcloud не прекращается даже во время работы службы - PullRequest
0 голосов
/ 01 декабря 2018

Я развертываю сервер node.js на Google App Engine из среды конвейера Bitbucket, и последняя команда в сценарии: gcloud -q app deploy app.yaml --no-promote --verbosity=debug

В журналах показано, что служба успешно развернута, но сценарийне завершается, это последняя часть журнала:

> DEBUG: Reading GCS logfile: 206 (read 10 bytes) PUSH DONE DEBUG:
> Operation [...] complete. Result: {...} DEBUG: Reading GCS logfile:
> 416 (no new content; keep polling)
> -------------------------------------------------------------------------------- DEBUG: Converted YAML to JSON: "{...}" DEBUG: Operation [...] not
> complete. Waiting to retry. Updating service [default] (this may take
> several minutes)... .DEBUG: Operation [...] not complete. Waiting to
> retry. ......DEBUG: Operation [...] not complete. Waiting to retry.
> .......DEBUG: Operation [...] not complete. Waiting to retry.
> ......DEBUG: Operation [...] not complete. Waiting to retry.
> .......DEBUG: Operation [...] not complete. Waiting to retry.
> .......DEBUG: Operation [...] not complete. Waiting to retry.

Я пытался добавить readiness_check и liveness_check в app.yml, но это не изменило поведение.

readiness_check:
  path: "/api/public/logout"
  check_interval_sec: 5
  timeout_sec: 4
  failure_threshold: 2
  success_threshold: 2
  app_start_timeout_sec: 300
liveness_check:
  path: "/api/public/logout"
  check_interval_sec: 30
  timeout_sec: 4
  failure_threshold: 2
  success_threshold: 2

Основным неизвестным здесь является то, какие критерии gcloud app deploy использует для определения условия завершения?Кроме того, есть ли обход этой проблемы?

Обновление

  1. Проблема возникает также при запуске команды gcloud app deploy из локальной среды (мой ноутбук).
  2. Проблема НЕ возникает при удалении флага --no-promo.

1 Ответ

0 голосов
/ 18 декабря 2018

Команда *1003* ожидает правильно сформированный и действительный файл app.yml, именно это определяет его условие завершения.

Поскольку вы подтвердили, что развертывание работает без флага --no-promote, это может означать, что что-то в конфигурации ожидает, что приложение уже развернуто и запущено, что препятствует завершению сценария.

Другой возможной причиной может быть то, что версия Google Cloud SDK, указанная в bitbucket-pipelines.yml, является более старой.Убедитесь, что вы работаете с последней .Это соображение широко применяется ко всем зависимостям в package.json, которые могут конфликтовать друг с другом, особенно при использовании более старых версий Node.js .

. Это руководство может помочь при создании звука конфигурация для развертываний на основе Bitbucket ;хотя приведенный пример с Python, он может также использоваться в качестве шаблона для обработки конвейера Node.js.

Nb. в этом решении более ранняя версия Google Cloud SDK (127.0.0) , что приведет к сбою в развертывании, поэтому ее следует заменить последней (228.0.0 или выше).,Также в руководстве не указана другая обязательная активация API: Cloud Build APIЯ уведомил команду об исправлении решения.

Я протестировал несколько сценариев на простом сервере Node.js и не смог воспроизвести проблему.Проверьте мой Github-репозиторий на код .

Для получения дополнительной помощи по этой теме, пожалуйста, предоставьте больше советов, таких как содержимое app.yml, bitbucket-pipelines.yml и package.jsonфайлы, а также описание состояния App Engine (службы, версии).

Чтобы развернуть тестовое хранилище в App Engine из Bitbucket, убедитесь, что в проекте сделано следующее:

  1. Включить API:

    • Администратор App Engine
    • Сборка облака
  2. СоздатьУчетная запись службы со следующими разрешениями и сгенерируйте ключ API:

    • Механизм приложения: Admin
    • Сборка облака: Редактор
    • Хранение: Администратор объектов
...