Как написано в документации Google здесь и здесь
Я использую последнюю версию Ruby, доступную в движке приложений.
Мой файл 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 истек. Пожалуйста, обновите среду выполнения до последней доступной версии.
Я понятия не имею, как это исправить. Вы можете помочь мне?
🤔 А знаете ли вы, что...
Ruby имеет богатую стандартную библиотеку, которая упрощает разработку приложений.
Похоже, способ обработки файла 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
#...