简体   繁体   English

部署到Google App Engine

[英]Deploying to Google App Engine

I am struggling with Google App Engine. 我正在努力使用Google App Engine。 All I want to do is this: 我想做的就是:

I am following the exact steps of the tutorials. 我正在按照教程的确切步骤进行操作。 I have tried several times now. 我现在已经尝了好几次了。 The app builds fine in Jenkins (I manage to get it running) however the deployment fails. 该应用程序在Jenkins中构建良好(我设法让它运行),但部署失败。

+ gcloud --project=MyProject preview app deploy target/guestbook-1.0-SNAPSHOT.war
ERROR: File [/var/jenkins/workspace/MyProject/target/guestbook-1.0-SNAPSHOT.war] is not a valid deployable item.
ERROR: (gcloud.preview.app.deploy) Errors occurred while parsing the App Engine app configuration: 
Build step 'Execute shell' marked build as failure
Finished: FAILURE

It all works fine on the local development web server. 它在本地开发Web服务器上运行良好。 The MyProject is the project id (I just changed it for the example). MyProject是项目ID(我刚刚为示例更改了它)。 What am I doing wrong. 我究竟做错了什么。 I mean have I forgotten to do something? 我的意思是我忘了做某事吗? I have been doing Java for over five years now, I can't understand why it should be so hard to do something so basic. 我已经做了五年多的Java了,我无法理解为什么做这么基本的事情应该这么难。 Please help me 请帮我

From Jenkins: 来自詹金斯:

Started by user User Name
Building remotely on cloud-dev-java in workspace /var/jenkins/workspace/MyGuestbook
 > git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > git config remote.origin.url https://source.developers.google.com/p/MyProject # timeout=10
Fetching upstream changes from https://source.developers.google.com/p/MyProject
 > git --version # timeout=10
using .gitcredentials to set credentials
 > git config --local credential.helper store --file=/tmp/git7191806817673001841.credentials # timeout=10
 > git fetch --tags --progress https://source.developers.google.com/p/MyProject +refs/heads/*:refs/remotes/origin/*
 > git config --local --remove-section credential # timeout=10
 > git rev-parse refs/remotes/origin/master^{commit} # timeout=10
 > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10
Checking out Revision 2bf8419a93275dc87adb7be00d1fda9e6efc773b (refs/remotes/origin/master)
 > git config core.sparsecheckout # timeout=10
 > git checkout -f 2bf8419a93275dc87adb7be00d1fda9e6efc773b
 > git rev-list 9d2cd477ad8fcb6f210bd2418e8f708e5c5167f9 # timeout=10
[MyGuestbook] $ mvn clean test package
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building myapp 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ myapp ---
[INFO] Deleting /var/jenkins/workspace/MyGuestbook/target
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ myapp ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /var/jenkins/workspace/MyGuestbook/src/main/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ myapp ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 2 source files to /var/jenkins/workspace/MyGuestbook/target/myapp-1.0-SNAPSHOT/WEB-INF/classes
[INFO] 
[INFO] --- versions-maven-plugin:2.1:display-dependency-updates (default) @ myapp ---
[INFO] The following dependencies in Dependencies have newer versions:
[INFO]   com.google.appengine:appengine-api-1.0-sdk ......... 1.9.17 -> 1.9.17a
[INFO]   com.google.appengine:appengine-api-stubs ........... 1.9.17 -> 1.9.17a
[INFO]   com.google.appengine:appengine-testing ............. 1.9.17 -> 1.9.17a
[INFO]   javax.servlet:servlet-api ......................... 2.5 -> 3.0-alpha-1
[INFO]   junit:junit ...................................... 4.12-beta-1 -> 4.12
[INFO]   org.mockito:mockito-all ............................. 1.9.5 -> 1.10.17
[INFO] 
[INFO] 
[INFO] --- versions-maven-plugin:2.1:display-plugin-updates (default) @ myapp ---
[INFO] 
[INFO] The following plugin updates are available:
[INFO]   com.google.appengine:appengine-maven-plugin ....... 1.9.17 -> 1.9.17a
[INFO]   maven-compiler-plugin .................................... 3.1 -> 3.2
[INFO]   maven-war-plugin ......................................... 2.4 -> 2.5
[INFO] 
[WARNING] The following plugins do not have their version specified:
[WARNING]   maven-clean-plugin ........................ (from super-pom) 2.6.1
[WARNING]   maven-deploy-plugin ....................... (from super-pom) 2.8.2
[WARNING]   maven-install-plugin ...................... (from super-pom) 2.5.2
[WARNING]   maven-resources-plugin ...................... (from super-pom) 2.7
[WARNING]   maven-site-plugin ........................... (from super-pom) 3.4
[WARNING]   maven-surefire-plugin ...................... (from super-pom) 2.18
[INFO] 
[INFO] Project defines minimum Maven version as: 3.1.0
[INFO] Plugins require minimum Maven version of: 3.1.0
[INFO] Note: the super-pom from Maven 3.1.0 defines some of the plugin
[INFO]       versions and may be influencing the plugins required minimum Maven
[INFO]       version.
[INFO] 
[INFO] No plugins require a newer version of Maven than specified by the pom.
[INFO] 
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ myapp ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /var/jenkins/workspace/MyGuestbook/src/test/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ myapp ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 2 source files to /var/jenkins/workspace/MyGuestbook/target/test-classes
[WARNING] /var/jenkins/workspace/MyGuestbook/src/test/java/com/mycompany/myapp/GuestbookServletTest.java: Some input files use or override a deprecated API.
[WARNING] /var/jenkins/workspace/MyGuestbook/src/test/java/com/mycompany/myapp/GuestbookServletTest.java: Recompile with -Xlint:deprecation for details.
[INFO] 
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ myapp ---
[INFO] Surefire report directory: /var/jenkins/workspace/MyGuestbook/target/surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.mycompany.myapp.GuestbookServletTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.702 sec
Running com.mycompany.myapp.SignGuestbookServletTest
Dec 22, 2014 5:32:44 PM com.google.appengine.api.datastore.dev.LocalDatastoreService init
INFO: Local Datastore initialized: 
    Type: Master/Slave
    Storage: In-memory
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.456 sec

Results :

Tests run: 2, Failures: 0, Errors: 0, Skipped: 0

[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ myapp ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /var/jenkins/workspace/MyGuestbook/src/main/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ myapp ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- versions-maven-plugin:2.1:display-dependency-updates (default) @ myapp ---
[INFO] The following dependencies in Dependencies have newer versions:
[INFO]   com.google.appengine:appengine-api-1.0-sdk ......... 1.9.17 -> 1.9.17a
[INFO]   com.google.appengine:appengine-api-stubs ........... 1.9.17 -> 1.9.17a
[INFO]   com.google.appengine:appengine-testing ............. 1.9.17 -> 1.9.17a
[INFO]   javax.servlet:servlet-api ......................... 2.5 -> 3.0-alpha-1
[INFO]   junit:junit ...................................... 4.12-beta-1 -> 4.12
[INFO]   org.mockito:mockito-all ............................. 1.9.5 -> 1.10.17
[INFO] 
[INFO] 
[INFO] --- versions-maven-plugin:2.1:display-plugin-updates (default) @ myapp ---
[INFO] 
[INFO] The following plugin updates are available:
[INFO]   com.google.appengine:appengine-maven-plugin ....... 1.9.17 -> 1.9.17a
[INFO]   maven-compiler-plugin .................................... 3.1 -> 3.2
[INFO]   maven-war-plugin ......................................... 2.4 -> 2.5
[INFO] 
[WARNING] The following plugins do not have their version specified:
[WARNING]   maven-clean-plugin ........................ (from super-pom) 2.6.1
[WARNING]   maven-deploy-plugin ....................... (from super-pom) 2.8.2
[WARNING]   maven-install-plugin ...................... (from super-pom) 2.5.2
[WARNING]   maven-resources-plugin ...................... (from super-pom) 2.7
[WARNING]   maven-site-plugin ........................... (from super-pom) 3.4
[WARNING]   maven-surefire-plugin ...................... (from super-pom) 2.18
[INFO] 
[INFO] Project defines minimum Maven version as: 3.1.0
[INFO] Plugins require minimum Maven version of: 3.1.0
[INFO] Note: the super-pom from Maven 3.1.0 defines some of the plugin
[INFO]       versions and may be influencing the plugins required minimum Maven
[INFO]       version.
[INFO] 
[INFO] No plugins require a newer version of Maven than specified by the pom.
[INFO] 
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ myapp ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /var/jenkins/workspace/MyGuestbook/src/test/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ myapp ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ myapp ---
[INFO] Skipping execution of surefire because it has already been run for this configuration
[INFO] 
[INFO] --- maven-war-plugin:2.4:war (default-war) @ myapp ---
[INFO] Packaging webapp
[INFO] Assembling webapp [myapp] in [/var/jenkins/workspace/MyGuestbook/target/myapp-1.0-SNAPSHOT]
[INFO] Processing war project
[INFO] Copying webapp webResources [/var/jenkins/workspace/MyGuestbook/src/main/webapp/WEB-INF] to [/var/jenkins/workspace/MyGuestbook/target/myapp-1.0-SNAPSHOT]
[INFO] Copying webapp resources [/var/jenkins/workspace/MyGuestbook/src/main/webapp]
[INFO] Webapp assembled in [154 msecs]
[INFO] Building war: /var/jenkins/workspace/MyGuestbook/target/myapp-1.0-SNAPSHOT.war
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 12.355s
[INFO] Finished at: Mon Dec 22 17:32:47 UTC 2014
[INFO] Final Memory: 20M/56M
[INFO] ------------------------------------------------------------------------
[MyGuestbook] $ /bin/sh -xe /tmp/hudson5523568617447680772.sh
+ gcloud --project=MyProject preview app deploy target/myapp-1.0-SNAPSHOT.war
ERROR: File [/var/jenkins/workspace/MyGuestbook/target/myapp-1.0-SNAPSHOT.war] is not a valid deployable item.
ERROR: (gcloud.preview.app.deploy) Errors occurred while parsing the App Engine app configuration: 
Build step 'Execute shell' marked build as failure
Finished: FAILURE

appengine-web.xml: AppEngine上-web.xml中:

<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
    <application>MyProject</application>
    <version>${appengine.app.version}</version>
    <threadsafe>true</threadsafe>

    <system-properties>
        <property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/>
    </system-properties>
</appengine-web-app>

What am I doing wrong, am I missing something? 我做错了什么,我错过了什么? I have followed the guides exactly as they say. 我完全按照他们的说法跟踪了指南。

I have tried to using Google Source as repository and Github. 我曾尝试使用Google Source作为存储库和Github。 Nothing works. 什么都行不通。

EDIT: 编辑:

It works: 有用:

Updating module [default] from file [/tmp/appcfgpyASfUun/app.yaml]
09:15 PM Host: appengine.google.com
09:15 PM Application: esoteric-cab-803; version: 1
09:15 PM 
Starting update of app: esoteric-cab-803, version: 1
09:15 PM Getting current resource limits.
09:15 PM Scanning files on local disk.
09:15 PM Cloning 6 application files.
09:15 PM Uploading 3 files and blobs.
09:15 PM Uploaded 3 files and blobs.
09:15 PM Compilation starting.
09:15 PM Compilation completed.
09:15 PM Starting deployment.
09:15 PM Checking if deployment succeeded.
09:15 PM Deployment successful.
09:15 PM Checking if updated app version is serving.
09:15 PM Completed update of app: esoteric-cab-803, version: 1
Finished: SUCCESS

What a wonderful sight! 多么美妙的景象!

It's failing to deploy because your jenkins build script is failing: 由于您的jenkins构建脚本失败,因此无法部署:

Build step 'Execute shell' marked build as failure

During the step "Execute shell", you have to make sure that the script returns with status 0. Anything else is considered failure. 在“执行shell”步骤中,您必须确保脚本以状态0返回。其他任何内容都被视为失败。 See this SO answer to a similar issue . 请参阅此SO回答类似问题

It appears that your "Execute shell" section is this one: 您的“执行shell”部分似乎是这样的:

[MyGuestbook] $ /bin/sh -xe /tmp/hudson5523568617447680772.sh
+ gcloud --project=MyProject preview app deploy target/myapp-1.0-SNAPSHOT.war
ERROR: File [/var/jenkins/workspace/MyGuestbook/target/myapp-1.0-SNAPSHOT.war] is not a valid deployable item.
ERROR: (gcloud.preview.app.deploy) Errors occurred while parsing the App Engine app configuration: 
Build step 'Execute shell' marked build as failure
Finished: FAILURE

This "Execute shell" sections of the build is failing because the status code returned from the script seems to be the status code returned from gcloud command. 构建的“执行shell”部分失败,因为从脚本返回的状态代码似乎是从gcloud命令返回的状态代码。 If you check the docs here, you can see that it doesn't accept .war archives, but only unpacked war folders . 如果您在此处查看文档,则可以看到它不接受.war存档,但只接受解压缩的war文件夹 You can simply change the line from 您只需更改该行即可

gcloud --project=MyProject preview app deploy target/myapp-1.0-SNAPSHOT.war

to

gcloud --project=MyProject preview app deploy target/myapp-1.0-SNAPSHOT

and at this point, the "Execute shell" section of the build will run properly, and so the jenkins build as a whole should complete correctly. 并且此时,构建的“执行shell”部分将正常运行,因此整个jenkins构建应该正确完成。

Gradle 摇篮

If you're using gradle for the build, it is likely already producing an exploded app directory: 如果您正在使用gradle进行构建,则可能已经生成了一个展开的应用目录:

build/exploded-app

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM