使用 Cloud Build 自动执行 App Engine 部署

此快速入门介绍了在新提交后如何自动将存储在 Cloud Source Repositories 中的应用部署到 App Engine。

准备工作

  1. 完成 在 Cloud Source Repositories 中创建代码库中的步骤。

    完成该快速入门后,您将拥有一个可以部署到 App Engine 的应用

  2. 启用 App Engine Admin, Cloud Build API。

    启用 API

授予 App Engine 访问 Cloud Build 服务账号的权限

Cloud Build 使用服务账号来部署代码。此账号的默认权限不允许执行某些操作,例如部署到 App Engine

您可以向服务账号授予其他 Identity and Access Management (IAM) 角色,从而使该账号能够部署到 App Engine:

  1. 在 Google Cloud Console 中,打开 Cloud Build 的“设置”页面:

    打开 Cloud Build 的“设置”页面

    您将会看到服务账号权限页面:

    “服务帐号权限”页面。

  2. App Engine Admin 角色的状态设置为启用

部署应用

  1. 在终端窗口中,转到包含代码库的目录:

    cd hello-world
    
  2. 部署示例应用:

    gcloud app deploy app.yaml
    
  3. 验证您的应用是否正在运行:

    gcloud app browse
    

    如果您的应用正在运行,则浏览器将显示消息 Hello, World!

创建 cloudbuild.yaml 文件

  1. 在终端窗口中,转到包含代码库的目录:

    cd hello-world
    
  2. 使用文本编辑器创建一个名为 cloudbuild.yaml 的文件,然后粘贴以下配置信息:

    steps:
    - name: "gcr.io/cloud-builders/gcloud"
      args: ["app", "deploy"]
    timeout: "1600s"
    

将 cloudbuild.yaml 文件添加到代码库

  1. cloudbuild.yaml 添加到代码库:

    git add .
    
  2. 提交带有说明此操作历史记录的注释的文件:

    git commit -m "Add cloudbuild.yaml file"
    
  3. 使用 git push 命令,将本地 Git 代码库的内容添加到 Cloud Source Repositories:

    git push origin master
    

创建构建触发器

  1. 在 GCP Console 中,打开“Cloud Build 触发器”页面。

    打开“触发器”页面

  2. 如果您的 Google Cloud 项目未被选择,请点击 选择一个项目,然后点击您的 Google Cloud 项目的名称。

  3. 点击创建触发器

    创建触发器 页面打开。

  4. 填写以下选项:

    • 名称字段中,输入 app-engine-test
    • 事件下,选择推送到分支
    • 来源 下,选择 hello-world 作为您的 代码库,选择 ^master$ 作为您的 分支
    • 配置下,选择 Cloud Build 配置文件(yaml 或 json)
    • Cloud Build 配置文件位置字段中的 / 后面,输入 cloudbuild.yaml
  5. 点击创建以保存您的构建触发器。

向应用推送更改

  1. 在终端窗口中,使用文本编辑器通过粘贴以下代码来更新 main.py 文件:

    #!/usr/bin/env python
    
    import webapp2
    
    class MainHandler(webapp2.RequestHandler):
        def get(self):
            self.response.write('I update automatically!')
    
    app = webapp2.WSGIApplication([
        ('/', MainHandler)
    ], debug=True)
    
  2. 将该文件添加到 Git。

    git add .
    
  3. 提交带有说明此操作历史记录的注释的文件:

    git commit -m "Update app to demonstrate build triggers"
    
  4. 使用 git push 命令,将本地 Git 代码库的内容添加到 Cloud Source Repositories:

    git push origin master
    

查看正在进行的构建

  1. 在 GCP Console 中,打开“Cloud Build 触发器”页面。

    打开“触发器”页面

  2. 如果您的 Google Cloud 项目未被选择,请点击 选择一个项目,然后点击您的 Google Cloud 项目的名称。

  3. 点击 历史记录

    此时将会打开一个包含所有构建的列表。列表顶部是一个新条目,表示您将更改推送到 Cloud Source Repositories 以后才开始的构建。构建准备就绪后,对应的构建条目旁边会出现绿色对勾标记。

重新测试您的应用

在终端窗口中,打开您的应用:

gcloud app browse

现在,浏览器将显示消息 I update automatically!

清理

为避免因本页中使用的资源导致您的 Google Cloud 账号产生费用,请按照以下步骤操作。

删除构建触发器

  1. 在 GCP Console 中,打开“Cloud Build 触发器”页面。

    打开“触发器”页面

  2. 如果您的 Google Cloud 项目未被选择,请点击 选择一个项目,然后点击您的 Google Cloud 项目的名称。

  3. 在您要删除的触发器的同一行上,点击 更多 ,然后点击 删除

删除代码库

  1. 在 GCP Console 中,为 Cloud Source Repositories 打开 所有代码库 页面。

    打开 Cloud Source Repositories

  2. 将指针放在要删除的代码库上,然后点击 设置

    常规设置 页面打开。

  3. 点击 删除此代码库

    移除代码库 对话框打开。

  4. 输入您要删除的代码库的名称。

  5. 点击删除

后续步骤