Google App Engine 部署

此页面记录了使用 dpl v1 进行部署,该版本目前是默认版本。下一个主要版本 dpl v2 将很快发布,我们建议您开始使用它。有关详细信息,请参阅我们的博文dpl v2 文档可以在此处找到

Travis CI 可以在构建成功后自动部署您的Google App Engine托管虚拟机应用程序。

对于最小配置,请将以下内容添加到您的.travis.yml

deploy:
  provider: gae
  keyfile: "YOUR SERVICE ACCOUNT JSON FILE"
  project: "YOUR PROJECT ID"

然后转到Google Cloud Console 仪表板,然后

  1. 启用“Google App Engine Admin API”,
  2. 转到“凭据”,单击“添加凭据”和“服务帐户密钥”,最后单击“JSON”下载您的服务帐户 JSON 文件。

强烈建议您在将密钥提交到存储库之前对其进行加密。首先确保您已安装Travis 命令行工具。然后从终端执行以下命令

travis encrypt-file client-secret.json --add

--add 标志会自动将解密步骤添加到 .travis 文件中。

请记住,上述命令必须在您的项目目录中运行,以便它可以为您修改.travis.yml

有关使用 Travis 加密密钥的更详细说明,请点击此处

要部署的项目 #

默认情况下,项目将使用与存储库相同的名称进行部署。通常,您需要明确配置project选项以匹配在您的 Cloud 控制台中找到的项目 ID(请注意,这有时与项目名称相同,但并非总是如此)。

您可以通过project选项显式设置项目 ID

deploy:
  provider: gae
  keyfile: ...
  project: continuous-deployment-demo

要部署的版本 #

必须设置version标志或default选项。如果 default 为 true,则将部署到默认版本,该版本将为http://your-project-id.appspot.com。如果改为设置version标志,它将部署到http://version-dot-your-project-id.appspot.com

要从中部署的分支 #

默认情况下,Travis 仅从您的master分支进行部署。

您还可以使用on选项明确指定要从中部署的分支

deploy:
  provider: gae
  keyfile: ...
  project: ...
  on: production

或者,您还可以将其配置为从所有分支部署。

deploy:
  provider: gae
  keyfile: ...
  project: ...
  on:
    all_branches: true

从拉取请求触发的构建永远不会触发部署。

不进行提升的部署 #

默认情况下,当您的应用程序部署后,它将被提升以接收所有流量。您可以使用no_promote选项禁用它

deploy:
  provider: gae
  keyfile: ...
  project: continuous-deployment-demo
  no_promote: true

此外,根据Google Cloud SDK 变更日志,“在未来的 Cloud SDK 版本中,将新版本提升以接收所有流量的部署将默认停止以前的版本”。

您可以通过设置选项no_stop_previous_version来防止这种情况发生

deploy:
  provider: gae
  keyfile: ...
  project: continuous-deployment-demo
  no_stop_previous_version: true

跳过清理 #

许多 App Engine 应用程序使用pip将库需求供应商到目录中,有时您需要构建工件或其他凭据才能进行部署。如果是这样,您需要避免 Travis 清理步骤,该步骤将在部署之前清理您的工作目录。

deploy:
    provider: gae
    skip_cleanup: true

示例存储库 #

有关配置了 Travis 部署的示例 App Engine 应用程序,请参阅此链接。请参阅项目中的其他分支以获取托管虚拟机示例以及不使用此提供程序的示例。

其他可用配置选项 #

  • project项目 ID用于标识 Google Cloud 上的项目。
  • keyfile:包含您的服务帐户凭据的 JSON 文件的路径,采用JSON Web Token格式。可通过Google Developers Console获取。默认为"service-account.json"。请注意,此文件应小心处理,因为它包含授权密钥。
  • config:模块配置文件的路径。默认为"app.yaml"。此文件取决于运行时(GoJavaPHPPython
  • version:将由此部署创建或替换的应用程序的版本。如果您未指定版本,则会为您生成一个版本。请参阅gcloud app deploy
  • default:将已部署的版本设置为默认服务版本的标志。请参阅gcloud app deploy
  • verbosity:允许您在调用"gcloud"时调整详细程度。默认为"warning"。请参阅gcloud
  • docker_build:如果部署托管虚拟机,则指定在何处构建您的映像。典型值为"remote"(在 Google Cloud Engine 上构建)和"local"(需要正确设置 Docker)(要在 Travis CI 上使用此功能,请阅读在 Travis CI 上使用 Docker)。默认为"remote"