gcloud nodejs cloudbuild.yaml застрял в бесконечном цикле

#node.js #google-app-engine #google-cloud-platform #gcloud

#node.js #google-app-engine #google-облачная платформа #gcloud

Вопрос:

У меня есть node.js веб -сайт, который работает нормально, когда я запускаю его локально node server.js . Я пытаюсь развернуть его онлайн с помощью GCP. Я создал проект, включил API app engine и дал свой ‘@cloudbuild.gserviceaccount.com ‘ права доступа к роли развертывателя ядра приложений учетной записи.

Я также добавил cloudbuild.файл yaml в моем репозитории:

 steps:
- name: "gcr.io/cloud-builders/gcloud"
  args: ["app", "deploy"]
  

Теперь, если я запускаю gcloud app deploy , моя сборка запускается, но мне кажется, что это вызывает бесконечный цикл сборок? Например, запуск моего журнала сборки выглядит так (в настоящее время ничего не выполняется):

введите описание изображения здесь

я запускаю gcloud app deploy , и начинается новая сборка (1a19d9ba):

введите описание изображения здесь

Но что-то с этой сборкой продолжает запускать новые сборки? на моем локальном компьютерном терминале вывод, который я получаю для запуска gcloud app deploy , продолжает запускать новые сборки:

 $ gcloud app deploy
Services to deploy:

descriptor:      [/mnt/c/Users/marti/Documents/projects/martinbarker/app.yaml]
source:          [/mnt/c/Users/marti/Documents/projects/martinbarker]
target project:  [martinbarker2]
target service:  [default]
target version:  [20201003t165547]
target url:      [https://martinbarker2.wl.r.appspot.com]


Do you want to continue (Y/n)?  y

Beginning deployment of service [default]...
Building and pushing image for service [default]
Started cloud build [1a19dxxxxx627d].
To see logs in the Cloud Console: https://console.cloud.google.com/cloud-build/builds/1axxx
------------------------------------------------- REMOTE BUILD OUTPUT --------------------------------------------------starting build "1a19xxxxxx27d"

FETCHSOURCE
Fetching storage object: gs://staging.martinbarker2.appspot.com/us.gcr.io/martinbarker2/appengine/default.20xxx47:latest#160xxx288
Copying gs://staging.martinbarker2.appspot.com/us.gcr.io/martinbarker2/appengine/default.202xxx547:latest#16xxx88...
| [1 files][117.7 MiB/117.7 MiB]
Operation completed over 1 objects/117.7 MiB.
BUILD
Already have image (with digest): gcr.io/cloud-builders/gcloud
Services to deploy:

descriptor:      [/workspace/app.yaml]
source:          [/workspace]
target project:  [martinbarker2]
target service:  [default]
target version:  [20201003t235749]
target url:      [https://martinbarker2.wl.r.appspot.com]


Do you want to continue (Y/n)?
WARNING: Unable to verify that the Appengine Flexible API is enabled for project [martinbarker2]. You may not have permission to list enabled services on this project. If it is not enabled, this may cause problems in running your deployment. Please ask the project owner to ensure that the Appengine Flexible API has been enabled and that this account has permission to list enabled APIs.
Beginning deployment of service [default]...
Building and pushing image for service [default]
Started cloud build [d0d0xxx9a987].
To see logs in the Cloud Console: https://console.cloud.google.com/cloud-build/builds/d0d0xxx987?project=114941087848
----------------------------- REMOTE BUILD OUTPUT ------------------------------
starting build "d0d0dxxx987"

FETCHSOURCE
Fetching storage object: gs://staging.martinbarker2.appspot.com/us.gcr.io/martinbarker2/appengine/default.20201xxx49:latest#160176947xx11
Copying gs://staging.martinbarker2.appspot.com/us.gcr.io/martinbarker2/appengine/default.20xxx:latest#16xxx548211...
 [1 files][117.7 MiB/117.7 MiB]
Operation completed over 1 objects/117.7 MiB.
BUILD
Already have image (with digest): gcr.io/cloud-builders/gcloud
Services to deploy:

descriptor:      [/workspace/app.yaml]
source:          [/workspace]
target project:  [martinbarker2]
target service:  [default]
target version:  [20201003t235818]
target url:      [https://martinbarker2.wl.r.appspot.com]


Do you want to continue (Y/n)?
WARNING: Unable to verify that the Appengine Flexible API is enabled for project [martinbarker2]. You may not have permission to list enabled services on this project. If it is not enabled, this may cause problems in running your deployment. Please ask the project owner to ensure that the Appengine Flexible API has been enabled and that this account has permission to list enabled APIs.
Beginning deployment of service [default]...
Building and pushing image for service [default]
Started cloud build [683bb8cxxx0368f36].
To see logs in the Cloud Console: https://console.cloud.google.com/cloud-build/builds/683bxxxf36?project=114xx48
----------------------------- REMOTE BUILD OUTPUT ------------------------------
starting build "683bb8xx368f36"

FETCHSOURCE
Fetching storage object: gs://staging.martinbarker2.appspot.com/us.gcr.io/martinbarker2/appengine/default.2020xxx18:latest#16xxx376
Copying gs://staging.martinbarker2.appspot.com/us.gcr.io/martinbarker2/appengine/default.202xxx18:latest#16xx376...
| [1 files][117.7 MiB/117.7 MiB]
Operation completed over 1 objects/117.7 MiB.
BUILD
Already have image (with digest): gcr.io/cloud-builders/gcloud
Services to deploy:

descriptor:      [/workspace/app.yaml]
source:          [/workspace]
target project:  [martinbarker2]
target service:  [default]
target version:  [20201003t235843]
target url:      [https://martinbarker2.wl.r.appspot.com]


Do you want to continue (Y/n)?
WARNING: Unable to verify that the Appengine Flexible API is enabled for project [martinbarker2]. You may not have permission to list enabled services on this project. If it is not enabled, this may cause problems in running your deployment. Please ask the project owner to ensure that the Appengine Flexible API has been enabled and that this account has permission to list enabled APIs.
Beginning deployment of service [default]...
Building and pushing image for service [default]
Started cloud build [feecxxx3cd86].
To see logs in the Cloud Console: https://console.cloud.google.com/cloud-build/builds/feexxx87848
----------------------------- REMOTE BUILD OUTPUT ------------------------------
starting build "feec9xxxx3cd86"

FETCHSOURCE
Fetching storage object: gs://staging.martinbarker2.appspot.com/us.gcr.io/martinbarker2/appengine/default.2020100xxx082
Copying gs://staging.martinbarker2.appspot.com/us.gcr.io/martinbarker2/appengine/default.202xxx82...
- [1 files][117.7 MiB/117.7 MiB]
Operation completed over 1 objects/117.7 MiB.
BUILD
Already have image (with digest): gcr.io/cloud-builders/gcloud
Services to deploy:

descriptor:      [/workspace/app.yaml]
source:          [/workspace]
target project:  [martinbarker2]
target service:  [default]
target version:  [20201003t235909]
target url:      [https://martinbarker2.wl.r.appspot.com]
Do you want to continue (Y/n)?
  

Это продолжается, и теперь у меня есть еще много сборок:
введите описание изображения здесь

Мое приложение.yaml:

 runtime: custom
env: flex
manual_scaling:
  instances: 2
  

это что-то с моим cloudbuild.файл yaml? У меня нет файла dockerfile в моей папке

Комментарии:

1. Можете ли вы поделиться своим app.yaml ?

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

Ответ №1:

«Это не ошибка; это особенность!» Но это не задокументировано, или я не нашел где! На самом деле, с помощью настраиваемой среды выполнения App Engine Flex вы создадите контейнер. Вы можете определить либо cloudbuild.yaml файл, либо a Dockerfile для описания создания контейнера. И этот контейнер создается с помощью облачной сборки.

Для информации, если вы задаете определенную языковую среду выполнения, Buildpack используется для создания контейнера, все еще при облачной сборке; однако Dockerfile больше не требуется

Итак, в вашем случае, как вы описываете, у вас есть cloudbuild.yaml файл, который развертывает пользовательскую среду выполнения App Engine flex, которая вызывает сборку облака для сборки контейнера, с cloudbuild.yaml файлом в параметрах, который развертывает ….. (цикл!)

Хорошо, теперь, как это исправить? 2 решения

  • Измените имя вашего cloudbuild.yaml файла, чтобы оно не соответствовало этому имени по умолчанию ( cloudbuild-noloop.yaml например). Задайте это имя в конфигурации триггера или в gcloud builds submit --config=cloudbuild-noloop.yaml команде
  • Обновите свой cloudbuild.yaml шаг развертывания следующим образом
 steps:
- name: "gcr.io/cloud-builders/gcloud"
  args: ["app", "deploy","--ignore-file=cloudbuild.yaml"]
  

Комментарии:

1. пробовал оба решения, но ни одно из них не работает, пожалуйста, помогите!!