我想知道是否有任何方法可以克隆谷歌应用引擎项目。我找不到任何关于此的帮助,尽管通常可能需要此功能。假设我开始开发一个配置了很多选项/ apis的app引擎应用程序。现在它将成为我的临时项目,我想要一个单独的项目进行生产。使用相同的设置和配置设置单独的生产项目绝非易事。
我主要想制作一个用于制作的暂存项目的副本,并在那里进行任何必要的更改。
答案 0 :(得分:1)
我的应用程序代码位于master
分支的git仓库中,从我用于部署到my_app
GAE项目的地方。就像你一样,我想要一个临时环境。
因此,我创建了一个新的my_app-dev
GAE项目,该项目将作为临时环境,仅部署在master
分支。
然后我从production
分支(实际上是应用代码的git控制副本)中提取了master
分支,我现在将其用作my_app
的独占部署源(生产)GAE项目。
为了降低部署到错误应用程序的风险,我决定只使用完整命令从项目目录中的cmds
文本文件(添加到git repo)中复制粘贴预先制作的cmd进行部署将代码部署到适当的GAE应用程序。我在master
分支中创建了这个文件,看起来像这样(我使用的是GAE SDK,而不是gcloud):
/usr/bin/python2.7 /usr/local/google_appengine/appcfg.py update main/main.yaml apartci/apartci.yaml buildin/buildin.yaml
/usr/bin/python2.7 /usr/local/google_appengine/appcfg.py update_dispatch .
/usr/bin/python2.7 /usr/local/google_appengine/appcfg.py update_indexes -A my_app-dev main
/usr/bin/python2.7 /usr/local/google_appengine/appcfg.py update_cron -A my_app-dev .
/usr/bin/python2.7 /usr/local/google_appengine/appcfg.py update_queues -A my_app-dev .
然后我合并了production
分支中的文件,并为生产GAE应用更新了它(并添加了git cmds以将在暂存环境中验证的master
分支更改合并到生产中):
/usr/bin/python2.7 /usr/local/google_appengine/appcfg.py update main/main.yaml apartci/apartci.yaml buildin/buildin.yaml
/usr/bin/python2.7 /usr/local/google_appengine/appcfg.py update_dispatch .
/usr/bin/python2.7 /usr/local/google_appengine/appcfg.py update_indexes -A my_app main
/usr/bin/python2.7 /usr/local/google_appengine/appcfg.py update_cron -A my_app .
/usr/bin/python2.7 /usr/local/google_appengine/appcfg.py update_queues -A my_app .
### merge into production:
git checkout master; git pull; git checkout production; git merge master
### check deltas between master and production:
git diff master..production
所以现在我有2个环境的2个并排目录:my_app-staging
和my_app-production
,分别包含从master
和production
分支拉出的git工作区。我在my_app-staging
工作,直到我对结果感到满意为止,然后切换到my_app-production
并复制粘贴cmds以合并更改并部署到生产中。
在任何时候,我都可以检查my_app-production
中的登台和生产分支之间的增量(很可能除GAE应用名称旁边还有其他分支):
git diff master..production
<强>更新强>
在实际的GAE应用程序方面,我不知道克隆功能。在没有很多配置的情况下,我在开发过程的早期手动克隆了我的应用程序。之后需要大多数配置添加/更改,我总是将它们应用于这两个应用程序。
可能可以使用Google App Engine Admin API创建此类实用程序。但我还没有使用它,我不知道它是否涵盖了完整克隆过程的所有旋钮。