Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Google云应用程序引擎上为Spring Boot应用程序构建触发器_Java_Spring_Maven_Google App Engine_Maven Gae Plugin - Fatal编程技术网

Java 在Google云应用程序引擎上为Spring Boot应用程序构建触发器

Java 在Google云应用程序引擎上为Spring Boot应用程序构建触发器,java,spring,maven,google-app-engine,maven-gae-plugin,Java,Spring,Maven,Google App Engine,Maven Gae Plugin,我正试图通过使用GoogleAppEngine的构建触发器在GoogleCloud平台上实现自动构建和部署。当前,当我推送到链接Github存储库的主分支时,会触发生成 该应用程序是一个带有Maven的Spring引导应用程序,它提供一个简单的API。我试图在我的cloudbuild.yaml文件中发布mvn appengine:deploy,如下所示: # cloudbuild.yaml steps: - name: 'gcr.io/cloud-builders/mvn' args: ['

我正试图通过使用GoogleAppEngine的构建触发器在GoogleCloud平台上实现自动构建和部署。当前,当我推送到链接Github存储库的主分支时,会触发生成

该应用程序是一个带有Maven的Spring引导应用程序,它提供一个简单的API。我试图在我的
cloudbuild.yaml
文件中发布
mvn appengine:deploy
,如下所示:

# cloudbuild.yaml
steps:
- name: 'gcr.io/cloud-builders/mvn'
  args: ['appengine:deploy']
mvn appengine:deploy在我在googlecloudshell中运行时可以正常工作,但在由build触发器执行时不能正常工作

触发的生成运行约20秒,然后失败并显示以下错误消息:

Execution default-cli of goal com.google.cloud.tools:appengine-maven-plugin:1.3.1:deploy failed: The Google Cloud SDK could not be found in the customary locations and no path was provided.
这是我的
pom.xml
配置

<project>
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.example.api</groupId>
  <artifactId>api</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>api</name>
  <description>API</description>

  <properties>
    <java.version>1.8</java.version>
    <maven.compiler.source>${java.version}</maven.compiler.source>
    <maven.compiler.target>${java.version}</maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <appengine.maven.plugin>1.3.2</appengine.maven.plugin>
    <jetty-maven-plugin>9.3.7.v20160115</jetty-maven-plugin>
    <gcloud-maven-plugin>2.0.9.121.v20160815</gcloud-maven-plugin>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
      <version>1.5.9.RELEASE</version>
    </dependency>

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <version>1.5.9.RELEASE</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <version>1.5.7.RELEASE</version>
        <executions>
          <execution>
            <goals>
              <goal>repackage</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
         <groupId>com.google.cloud.tools</groupId>
         <artifactId>appengine-maven-plugin</artifactId>
         <version>${appengine.maven.plugin.version}</version>
      </plugin>

      <plugin>
       <groupId>org.eclipse.jetty</groupId>
       <artifactId>jetty-maven-plugin</artifactId>
       <version>${jetty-maven-plugin}</version>
      </plugin>

    </plugins>
  </build>
</project>

4.0.0
com.example.api
应用程序编程接口
0.0.1-快照
罐子
应用程序编程接口
美国石油学会
1.8
${java.version}
${java.version}
UTF-8
1.3.2
9.3.7.v20160115
2.0.9.121.v20160815
org.springframework.boot
SpringBootStarterWeb
1.5.9.1发布
org.springframework.boot
弹簧起动试验
1.5.9.1发布
测试
javax.servlet
javax.servlet-api
3.1.0
假如
org.springframework.boot
springbootmaven插件
1.5.7.1发布
重新包装
com.google.cloud.tools
appengine maven插件
${appengine.maven.plugin.version}
org.eclipse.jetty
jetty maven插件
${jetty maven插件}

你知道我的配置中可能缺少什么吗?我很难在网上找到使用Maven在Google应用程序引擎上部署的
cloudbuild.yaml
示例

appengine maven插件要安装的云SDK。 由于未安装
gcr.io/cloud builders/mvn
docker映像,因此
appengine:deploy
目标失败

我可以想出两种方法来解决这个问题:

1) 创建同时具有和的自定义云构建步骤(Dockerfile)。然后将其部署到GCR中,并在
cloudbuild.yaml
中使用,而不是
GCR.io/cloud builders/mvn

2) 不要使用appengine maven插件,而是将构建和部署分为几个步骤

# cloudbuild.yaml
steps:
- name: 'gcr.io/cloud-builders/mvn'
  args: ['package']
- name: 'gcr.io/cloud-builders/gcloud'
  args: ['app', 'deploy', '/workspace/.../target/path-to-app.yaml']

请注意,在构建WAR之后,在调用
gcloud app deploy
之前,您可能需要多次使用
gcloud
来启动应用程序。最近,我在升级到新MacBook时遇到了类似的错误消息。我移动了
/usr/local/share/google/
目录中的
google cloud sdk
文件夹,即
/usr/local/share/google/google/google cloud sdk
,解决了我的问题。

云shell在云sdk可用的服务器上下文中执行。SDK在执行触发构建的服务器上下文中可用吗?错误消息表明它可能不是(或者它或构建可能配置不正确)。在没有亲自测试的情况下进行了升级,但这两个选项都有意义,值得一试。