App Engine сообщает: «Ваша рабочая версия Ruby33 устарела», но это не так

Как написано в документации Google здесь и здесь

Я использую последнюю версию Ruby, доступную в движке приложений.

Время выполнения Среда Идентификатор среды выполнения Конец поддержки Устарело Вывод из эксплуатации Рубин 3.3 Убунту 22.04 рубин33 2027-03-31 2028-03-31 Рубин 3.2 Убунту 22.04 рубин32 2026-03-31 2027-03-31

Мой файл worker.yml начинается так:

runtime: ruby33
env: flex
service: default
entrypoint: bundle exec sidekiq
resources:
  cpu: 2
  memory_gb: 1.6
  disk_size_gb: 10

Мой Gemfile начинается так:

source 'https://rubygems.org'

ruby "3.3.1"

Мой Gemfile.lock заканчивается так:

RUBY VERSION
   ruby 3.3.1p55

BUNDLED WITH
   2.3.26

Мой Dockerfile начинается так:

# Make sure RUBY_VERSION matches the Ruby version in .ruby-version and Gemfile
ARG RUBY_VERSION=3.3.1
FROM registry.docker.com/library/ruby:$RUBY_VERSION-slim as base

Мой cloudbuild.yaml выглядит так

#First I build the image:
  - id: "Build worker"
    name: "gcr.io/cloud-builders/docker"
    script: |
      #!/usr/bin/env bash
      docker build --target worker -t $_IMAGE_URL .

#Then I deploy it:
 - id: "Launch worker"
   name: 'gcr.io/google.com/cloudsdktool/cloud-sdk:alpine'
   script: |
     #!/usr/bin/env bash
     gcloud app deploy worker.yaml --image-url=$_IMAGE_URL --quiet

но при развертывании я получаю эту ошибку:

Шаг 13. «Запуск рабочего процесса»: ОШИБКА: (gcloud.app.deploy) INVALID_ARGUMENT: обнаружены ошибки при проверке среды выполнения. Срок поддержки вашей рабочей версии Ruby33 истек. Пожалуйста, обновите среду выполнения до последней доступной версии.

Я понятия не имею, как это исправить. Вы можете помочь мне?

Я не вижу операционную систему в вашем worker.yaml файле? Также не рекомендуется специально добавлять номер версии среды выполнения Ruby. Также я попытался развернуть простое Hello World приложение, следуя этому Документу, и оно было успешно развернуто без каких-либо ошибок.

Sandeep Vokkareni 02.08.2024 21:26

Попробуйте снова развернуть свой сервис, используя флаг --verbosity=debug, и посмотрите результат. Также убедитесь, что вы используете последнюю версию Google Cloud SDK.

Sandeep Vokkareni 02.08.2024 21:26

Я не уверен, имеет ли это значение, поскольку я этим не пользуюсь, но ruby:3.3.1-slim основан на Debian 12.6 «Книжный червь», но тогда вы показываете совместимость с Ubuntu 22.04 (Jammy Jellyfish).

engineersmnky 02.08.2024 21:42

Если вы используете App Engine Flex, посмотрите на гибкую страницу (замените «стандартный» на «гибкий» в URL-адресе ваших ссылок). И попробуйте еще раз: cloud.google.com/appengine/docs/flexible/ruby/runtime При этом для запуска контейнера в большом масштабе Cloud Run — гораздо лучшее место, чем App Engine flex.

guillaume blaquiere 02.08.2024 21:48

@guillaumeblaquiere Конечно. Но запускать процесс, который не отвечает на HTTP-запросы в Cloud Run, слишком сложно.

Micka 05.08.2024 09:21
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Шаг 1: Создание приложения Slack Чтобы создать Slackbot, вам необходимо создать приложение Slack. Войдите в свою учетную запись Slack и перейдите на...
1
5
73
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Похоже, способ обработки файла yaml движком приложения немного изменился в период с 4 июля 2024 г. по 8 августа 2024 г.

Теперь runtime_config.operating_system ДОЛЖНО быть определено, иначе произойдет сбой с неясной ошибкой INVALID_ARGUMENT: Error(s) encountered validating runtime. Your runtime version for ...

Я исправил эту проблему, добавив это в свой worker.yml файл:

runtime: ruby
env: flex
service: default
entrypoint: bundle exec sidekiq
runtime_config:
  operating_system: "ubuntu22" # <-- FIX

#...

Другие вопросы по теме