【问题标题】:How to copy / clone entire Google App Engine Project如何复制/克隆整个 Google App Engine 项目
【发布时间】:2017-07-18 11:26:56
【问题描述】:

我想知道是否有任何方法可以克隆谷歌应用引擎项目。我找不到任何有关此功能的帮助,尽管它通常可能需要此功能。假设我开始开发一个配置了这么多选项/api 的应用程序引擎应用程序。现在它将成为我的临时项目,我想要一个单独的生产项目。设置具有相同设置和配置的单独生产项目从来都不是一件容易的事。

主要是我想复制我的暂存项目以用于生产,并在那里进行任何必要的更改。

【问题讨论】:

    标签: google-app-engine google-cloud-platform


    【解决方案1】:

    我的应用程序代码位于 master 分支中的 git 存储库中,我曾经从该分支部署到 my_app GAE 项目。和你一样,我想要一个登台环境。

    所以我创建了一个新的my_app-dev GAE 项目,它将作为暂存环境,专门从master 分支进行部署。

    然后,我从 master 分支(实际上是应用程序代码的 git 控制副本)中提取了一个 production 分支,我现在将其用作 my_app(生产)GAE 项目的专有部署源。

    为了降低部署到错误应用程序的风险,我决定仅通过从项目目录中的 cmds 文本文件(添加到 git 存储库)中复制粘贴预煮 cmds 以及完整的部署命令来部署代码到相应的 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-stagingmy_app-production,分别包含从 masterproduction 分支提取的 git 工作区。我在 my_app-staging 工作,直到我对结果感到满意,然后我切换到 my_app-production 并复制粘贴 cmd 以合并更改并部署到生产中。

    我随时可以在my_app-production 中检查暂存分支和生产分支之间的增量(很可能除了 GAE 应用名称之外还有其他分支):

    git diff master..production
    

    更新

    在实际的 GAE 应用程序方面,我不知道克隆功能。我在开发过程的早期手动克隆了我的应用程序,当时没有很多配置。之后需要大多数配置添加/更改,我总是将它们应用于两个应用程序。

    可能可以使用Google App Engine Admin API 创建这样的实用程序。但是我还没用过,不知道是不是涵盖了一个完整克隆过程的所有旋钮。

    【讨论】:

    • 这很酷,但如果有办法在谷歌云平台本身上制作项目副本,那将是一个很大的优势。这是因为一个项目可以有许多配置(您启用了不同的 api,如 Gmail、云数据存储等)。在进行单独部署时,肯定不会记住所有这些配置。在这种情况下,您需要手动在新项目中进行所有这些配置。
    • 我完全没有得到这个方面。是的,我同意你的看法。答案已更新。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-19
    • 2014-11-22
    • 2018-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多