Сборка GCP Cloud игнорирует настройки тайм-аута - PullRequest
1 голос
/ 27 февраля 2020

Я использую Cloud Build для копирования файла конфигурации из хранилища и развертывания приложения на App Engine flex. Проблема в том, что сборка завершается неудачей каждый раз, когда она длится более 10 минут. Я указал время ожидания в моем cloudbuild.yaml, но похоже, что оно игнорируется. Кроме того, я настроил app/cloud_build_timeout и установил его на 1000. Может ли кто-нибудь объяснить мне, что здесь не так?

Мой cloudbuild.yaml выглядит следующим образом:

steps:
  - name: gcr.io/cloud-builders/gsutil
    args: ["cp", "gs://myproj-dev-247118.appspot.com/.env.cloud", ".env"]
  - name: "gcr.io/cloud-builders/gcloud"
    args: ["app", "deploy"]
    timeout: 1000s
timeout: 1600s

Мой app.yaml используйте пользовательский env, который собирает его из Dockerfile и выглядит так:

runtime: custom
env: flex

manual_scaling:
  instances: 1
env_variables:
  NODE_ENV: dev

Dockerfile также не содержит ничего особенного, просто устанавливает зависимости и строит приложение:

FROM node:10 as front-builder
WORKDIR /app
COPY front-end .
RUN npm install
RUN npm run build:web

FROM node:12
WORKDIR /app
COPY api .
RUN npm install
RUN npm run build
COPY .env .env
EXPOSE 8080
COPY --from=front-builder /app/web-build web-build
CMD npm start

1 Ответ

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

При запуске gcloud app deploy непосредственно для приложения App Engine Flex, например, с локального компьютера, под капотом запускается задание Cloud Build для создания образа, который затем развертывается в GAE (вы можете увидеть эту сборку в Cloud Консоль> Cloud Build). Эта сборка имеет 10-минутный тайм-аут, который можно настроить с помощью:

gcloud config set app/cloud_build_timeout 1000

Теперь проблема заключается в том, что вы запускаете команду gcloud app deploy из самой Cloud Build. Поскольку каждый отдельный шаг Cloud Build выполняется в своем собственном контейнере Docker, вы не можете просто добавить предыдущий шаг, чтобы настроить время ожидания, так как следующий будет использовать настройку gcloud по умолчанию.

You ' У нас есть несколько вариантов решения этой проблемы:

  • Добавьте шаг сборки, чтобы сначала создать образ с помощью docker build, загрузите его в Google Cloud Registry. Вы можете установить пользовательское время ожидания для этих шагов в соответствии с вашими потребностями. Наконец, разверните свое приложение с помощью glcoud app deploy --image-url=IMAGE-URL.
  • Создайте свой собственный пользовательский конструктор gcloud , где app/cloud_build_timeout настроено на ваше собственное значение. Вы можете получить его из Dockerfile строителя gcloud по умолчанию и добавить /builder/google-cloud-sdk/bin/gcloud config set app/cloud_build_timeout 1000
...