Estoy trabajando en un proyecto de grupo donde queremos desplegar un back-end a la nube de Google. El backend se crea con Java11, Gradle y Primavera-Boot, y despliega a través de GitHub con Travis a la nube de Google.
Las carreras de back-end como debe ser en localhost ./gradlew bootrun
, pero cuando se trata de implementarlo en la nube de Google obtenemos el siguiente error:
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.
Recreamos este error con el siguiente procedimiento, la eliminación de GitHub y Travis partir de la ecuación:
Creado un nuevo proyecto Primavera-Boot en https://start.spring.io/ con estos valores:
- Proyecto: Gradle
- Idioma: Java
- Primavera de arranque: 2.1.9
- Proyecto de metadatos: Opciones: Java: 11
- Dependencias: Seguridad Primavera, Primavera Web, Soporte GCP
Una vez creado, hemos añadido los archivos app.yaml
y client_secret.json
.
El client_secret.json
archivo contiene información acerca de una prueba-cliente en gcloud con una gran cantidad de permisos.
app.yaml:
runtime: java11
env: flex
service: default
handlers:
- url: /.*
script: this field is required, but ignored
Tanto app.yaml
y client_secret.json
se almacenan en el mismo lugar build.gradle
y settings.gradle
son.
Entonces, desde el terminal (utilizamos el de VScode), nos encontramos gcloud app deploy
. Este comando primero nos pregunta si queremos implementar el backend para un proyecto de Google Cloud especificado, lista que se encuentra el app.yaml
archivo, la fuente y el destino. Entonces, cuando hemos presionado Y para continuar, aparece el error.
Aquí está el build.gradle
archivo, que puede ser útil (?):
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}"
}
}
Así que nuestra pregunta es; ¿Qué significa el error? Y ¿cómo solucionarlo? Hemos probado un montón de cosas como la edición de ambos app.yaml
y build.gradle
, pero nada parece funcionar. También luchamos para entender dónde se produce el error, ya que el back-end funciona muy bien en localhost.
Agradecemos todas las respuestas!
Saludos cordiales HaavardG: D
Parece que la eliminación env: flex
del app.yaml
resolvieron el problema que env: flex
de alguna manera no es compatible con Java11.
Yo creo...