如何回滚app-engine部署

时间:2014-09-27 00:02:33

标签: java eclipse google-app-engine rollback

我有一个Appengine连接的android项目(eclipse)。我正在尝试部署它,因为我做了无数次。但是这次我收到了以下错误。

  

无法更新应用:错误发布到网址:   https://appengine.google.com/api/appversion/create?app_id=myappid&version=1&   409 Conflict用户myusername的另一个事务已经存在   app的进度:s~myappid,版本:1。该用户可以撤消   使用“appcfg rollback”进行交易。

     

有关详细信息,请参阅部署控制台无法更新应用:   发布到网址时出错:   https://appengine.google.com/api/appversion/create?app_id=myappid&version=1&   409 Conflict用户myusername的另一个事务已经存在   app的进度:s~myappid,版本:1。该用户可以撤消   使用“appcfg rollback”进行交易。

所以我打开我的osx终端并导航到我项目的文件夹。当我输入

appcfg.py rollback .

我收到终端错误

  

appcfg.py:错误:目录不包含app.yaml配置   文件

感谢任何指示。

更新

我想我终于找到了它的位置,但现在我在获得许可时被拒绝

/Applications/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.9.3/appengine-java-sdk-1.9.3/bin/appcfg.sh rollback war

8 个答案:

答案 0 :(得分:1)

由于您使用的是Mac,请尝试

appcfg.sh rollback

答案 1 :(得分:0)

您可能会在appcfg

上找到don't have execute permissions

因此,如果您更改到SDK目录并运行

chmod 755 appcfg.sh

然后

appcfg.sh rollback <path_to_app>/war

应该有效。如果没有,您可能有一个WebContent目录,在这种情况下使用该路径。从本质上讲,appcfg希望看到WEB-INF目录,其中包含您正在回滚的模块的appengine-web.xml

答案 2 :(得分:0)

您还可以通过在命令本身中指定您的应用ID和版本来避免指定您的应用目录(因为它看起来不适合您):

appcfg.py rollback -A your_app_id -V your_app_version

如果您有多个模块,那么您还需要使用-M开关指定它。

答案 3 :(得分:0)

在MAC上 - 在终端,转到你的sdk目录 - /Users/user/Desktop/eclipse/plugins/com.google.appengine.eclipse.sdkbundle_1.9.20/appengine-java-sdk-1.9.20/bin

  

chmod 777 *

运行

  

bash appcfg.sh rollback / Users / user / Desktop / builder / war

最后一个参数是项目内战争的位置

答案 4 :(得分:0)

我遇到了同样的问题。我在mac上使用这个命令解决了它: python /usr/local/bin/appcfg.py -verbose --no_cookies --email=account@gmail.com --passin rollback directoryname

其中directoryname是app.yaml所在的文件夹。对于我的情况,它是在Dropbox文件夹上。所以我首先使用终端进入该目录然后粘贴:python /usr/local/bin/appcfg.py -verbose --no_cookies --email=account@gmail.com --passin app

其中app定义文件名app.yaml

答案 5 :(得分:0)

这是针对使用应用引擎的java项目 这是您先前部署未成功部署的情况

转到app engine sdk

C:\Program Files (x86)\Google\appengine-java-sdk-1.9.49\bin

然后添加

  

语法:appcfg.sh回滚项目war文件夹

示例:appcfg.sh rollback E:myproject\war

够!!!

答案 6 :(得分:0)

对于Windows用户,

Syntax: "<appengine sdk bin folder path>\appcfg" rollback "<war path of your project"

Example: "C:\Users\user\.m2\repository\com\google\appengine\appengine-java-
sdk\1.9.44\appengine-java-sdk\appengine-java-sdk-1.9.44\bin\appcfg" rollback "D:\helloworld\war"

以上输出将是这样的,

********************************************************
There is a new version of the SDK available.
-----------
Latest SDK:
Release: 1.9.49
Timestamp: Wed Jan 18 23:03:47 IST 2017
API versions: [1.0]

-----------
Your SDK:
Release: 1.9.44
Timestamp: Sat Aug 20 03:11:38 IST 2016
API versions: [1.0]

-----------
Please visit https://developers.google.com/appengine/downloads for the latest SD
K.
********************************************************
Reading application configuration data...


Beginning interaction for module default...
0% Rolling back the update.
Success.
Cleaning up temporary files for module default...

答案 7 :(得分:0)

仅仅是一个FYI:我在Mac上使用Eclipse java插件(所以否则没有任何地方的SDK),通过挖掘Eclipse包中找到命令文件等,但可以预见的是它没有& #39;运行。所以我刚下载了appengine Java SDK,解压缩它,进入bin,运行./appcfg rollback my / proj命令,如你所见。

保持终端窗口打开,不要关闭它,继续阅读...

它会打开一个Web浏览器,并以非常简单的方式告诉您&#34;复制代码并返回应用程序&#34;。在相当长的一段时间里,我还没有必要回滚部署,但我不记得这一步。无论如何,我不知道这是什么意思,直到我碰巧看到我运行appcfg命令的终端,现在正在等待我粘贴该代码。然后一切都很好。