【问题标题】:Deploy to Google App Engine via a GitHub Repo通过 GitHub 存储库部署到 Google App Engine
【发布时间】:2017-05-09 14:22:17
【问题描述】:

我正在学习如何使用 Google App Engine,我可以通过终端很好地部署,但我想让人们为我的 github 存储库做出贡献,他们发布的任何内容都会更新我的应用程序。这是我的仓库:

https://github.com/rajtastic/roshanissuperveryawesome

我已将我的 repo 同步到应用引擎,我可以在我的云实例中看到内容

我的问题是:

  • 每当我提交到我的存储库时,如何部署我的应用的新版本?

有谁知道这是否可行?

【问题讨论】:

  • 您应该回滚您的更改并将其添加为答案,以免留下未回答的问题
  • 感谢@DanCornilescu,回滚并回答
  • 允许人们为我的 github 存储库做出贡献,他们发布的任何内容都会更新我的应用程序这是我很长时间以来看到的最糟糕的想法。
  • 嘿@Rajtastic,检查this answer,看看你能不能解决这个问题!

标签: google-app-engine github


【解决方案1】:

我只是通过使用 Google 的官方 deploy-appengineGithub Action 来实现的。而且其实很简单:

  • 您需要正确配置 Google Cloud 项目。 通过您的 GCP 控制台,启用 App Engine Admin API 并为您的项目设置Service Account
  • 之后,将新服务帐户的密钥注册到您的 repo secretsGCP_SA_KEY
  • 要在您的存储库中启用Github Actions,请在.github/workflows 路径中创建一个YALM 文件并配置其jobs 以根据您的需要工作。 (语法说明请查看official docs
  • 因此,请确保将 deploy-appengine 操作包含在其 steps 之一中,可能是在另一个构建您的项目之后

,您的部署自动化正在发挥作用!

Here你可以看一个完整的例子

如果您有任何困难,请告诉我,我很乐意帮助您解决此问题

【讨论】:

    【解决方案2】:

    看起来原来的推送部署功能现已弃用,但您可以使用 Google Cloud Platform 的构建触发器来执行此操作:

    导航到 Google Cloud Platform > Container Registry > Build Triggers 并设置要从连接的 github 存储库自动构建的分支。

    确保您已将构建定义添加到您的存储库。 Here 你可以找到完整的规范,但这里是通过cloudbuild.yaml 进行gcloud deploy 的最低限度的示例:

    steps:
    - name: 'gcr.io/cloud-builders/gcloud'
      args: ['app', 'deploy']
    

    【讨论】:

    • 使用 Google 可以通过其 GitHub 应用程序构建以部署到 App Engine 对我来说效果非常好,但是您需要执行的步骤比此处或上面的链接中概述的要多。我写了这篇关于你需要做什么的总结leighmcculloch.com/posts/…
    • 不幸的是@LeighMcCulloch :( 添加该 IAM 成员返回错误:“电子邮件地址和域必须与活动的 Google 帐户、G Suite 帐户或 Cloud Identity 帐户相关联。”
    • @NaturalBornCamper 该错误通常表明您使用的电子邮件无效,例如有错字或未连接到任何帐户。这个设置对我仍然有效。
    【解决方案3】:

    我写了一个全面的tutorial,您可以按照它来通过 Github Actions 在 Google Cloud 上持续交付您的 Github 应用程序。


    总之,这里就是你需要的main.workflow配置

    workflow “build & deploy” {
     resolves = [“gcloud deploy”]
     on = “push”
    }
    action “filter master” {
     uses = “actions/bin/filter@master”
     args = “branch master”
    }
    action “install node_modules” {
     uses = “nuxt/actions-yarn@master”
     needs = [“filter master”]
     args = “install”
    }
    action “build static files” {
     uses = “nuxt/actions-yarn@master”
     needs = [“install node_modules”]
     args = “build”
    }
    action “gcloud auth” {
     uses = “actions/gcloud/auth@master”
     secrets = [“GCLOUD_AUTH”]
     needs = [“build static files”]
    }
    action “gcloud deploy” {
     uses = “actions/gcloud/cli@master”
     needs = [“gcloud auth”]
     runs = “gcloud app deploy — project=<PROJECT-ID>”
    }
    

    【讨论】:

      【解决方案4】:

      现在应该可以使用 GitHub Actions(2018 年 10 月)。

      GitHub Actions 允许您连接和共享容器以运行您的软件开发工作流程。在 GitHub 或任何外部系统上以任何语言轻松构建、打包、发布、更新和部署您的项目,而无需自己运行代码。

      Actions

      工作流程可以由 GitHub 平台事件(即推送、发布、发布)触发,并且可以运行一系列串行或并行操作作为响应。为社区构建和维护的您所了解和喜爱的服务组合和配置操作。

      【讨论】:

        【解决方案5】:

        这似乎是不可能的。看起来您需要通过某个地方的外壳进行部署(我认为 Google Cloud Shell 不起作用,因为它不能自动化)。 Codeship.com 可以做到,而且我的工作非常好:

        https://documentation.codeship.com/basic/continuous-deployment/deployment-to-google-app-engine/


        【讨论】:

          猜你喜欢
          • 2014-08-28
          • 2018-04-16
          • 1970-01-01
          • 1970-01-01
          • 2015-02-19
          • 2020-01-29
          • 2017-01-24
          • 2018-03-23
          • 1970-01-01
          相关资源
          最近更新 更多