Я работаю над групповым проектом, в котором мы хотим развернуть бэкэнд в Google Cloud. Серверная часть создается с помощью Java11, Gradle и Spring-Boot и разворачивается через GitHub с Travis в Google Cloud.
Бэкэнд работает как обычно на localhost с ./gradlew bootrun
, но при попытке развернуть его в Google Cloud мы получаем следующую ошибку:
ERROR: (gcloud.app.deploy) Your application does not satisfy all of the requirements for a runtime of type [java11]. Please correct the errors and try again.
Мы воссоздали эту ошибку с помощью следующей процедуры, удалив GitHub и Travis из уравнения:
Создали новый проект Spring-Boot в https://start.spring.io/ с этими настройками:
- Проект: Gradle Project
- Язык: Java
- Spring Boot: 2.1.9
- Метаданные проекта: Опции:Java: 11
- Зависимости: Spring Security, Spring Web, поддержка GCP
После создания мы добавили файлы app.yaml
и client_secret.json
.
. Файл client_secret.json
содержит информацию о тестовом клиенте в gcloud с множеством разрешений.
app.yaml:
runtime: java11
env: flex
service: default
handlers:
- url: /.*
script: this field is required, but ignored
И app.yaml
, и client_secret.json
хранятся в одном месте build.gradle
и settings.gradle
.
Тогда,из терминала (мы использовали тот в VScode), мы запустили gcloud app deploy
. Сначала эта команда спросит нас, хотим ли мы развернуть серверную часть в указанном облачном проекте Google, указав, что он нашел файл app.yaml
, источник и цель. Затем, когда мы нажимаем Y, чтобы продолжить, появляется ошибка.
Вот файл build.gradle
, который может быть полезен (?):
plugins {
id 'org.springframework.boot' version '2.1.9.RELEASE'
id 'io.spring.dependency-management' version '1.0.8.RELEASE'
id 'java'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
repositories {
mavenCentral()
}
ext {
set('springCloudVersion', "Greenwich.SR3")
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.cloud:spring-cloud-gcp-starter'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.security:spring-security-test'
}
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}
Итак, наш вопрос;что означает ошибка? И как мы это исправим? Мы пробовали много вещей, таких как редактирование app.yaml
и build.gradle
, но, похоже, ничего не работает. Мы также изо всех сил пытаемся понять, где происходит ошибка, потому что серверная часть работает нормально на localhost.
Мы ценим каждый ответ!
С наилучшими пожеланиями HaavardG: D