如何使用谷歌云构建部署springboot应用程序(在gitpushs上编译)



有人能告诉我如何配置存储在github上的springboot应用程序的自动部署吗?

我尝试了一些堆栈溢出的解决方案,但它不起作用。我的app.yaml文件看起来像

runtime: java
env: flex
runtime_config:
jdk: openjdk11
handlers:
- url: /.*
script: this field is required, but ignored

我的cloudbuild.yaml

steps:
- name: 'gcr.io/cloud-builders/mvn'
args: ['package']
- name: 'gcr.io/cloud-builders/gcloud'
args: ['app', 'deploy', '/workspace/src/main/resources/app.yaml']

我的错误是:

线程"main"com.google.cloud.runtimes.builder.Exception.ArtifactNotFoundException中的异常:未找到可部署的工件。无法继续。

感谢您的回复。

首先,AppEngine Flexible不存在openJKD11运行时配置。您必须使用这样的自定义运行时:

runtime: custom
env: flex
handlers:
- url: /.*
script: this field is required, but ignored

然后,您必须构建代码的容器映像。你可以在你的项目根目录中使用标准的Dockerfile,比如这个

FROM maven:3.6.3-jdk-11 as builder
# Copy local code to the container image.
WORKDIR /app
COPY pom.xml .
COPY src ./src
# Build a release artifact.
RUN mvn package 
FROM adoptopenjdk/openjdk11
COPY --from=builder /app/target/java-*.jar /java.jar
# Run the web service on container startup.
CMD ["java","-Djava.security.egd=file:/dev/./urandom","-Dserver.port=${PORT}","-jar","/java.jar"]

根据JAR的名称更改此行COPY --from=builder /app/target/java-*.jar /java.jarjava-*.jar

在您的云构建中,只需部署您的应用程序

steps:
- name: 'gcr.io/cloud-builders/gcloud'
args: ['app', 'deploy']

附加备注

您以前的Cloud Build无法工作,因为您的jar文件在target/目录中,而不在根目录中,并且您的部署找不到它。为此,您可以在Cloud Build 中添加dir参数

steps:
- name: 'gcr.io/cloud-builders/mvn'
args: ['package']
- name: 'gcr.io/cloud-builders/gcloud'
args: ['app', 'deploy', '/workspace/src/main/resources/app.yaml']
dir: "target"

但下一个错误是不支持运行时openjdk11。

最新更新