venditan / appengine-deploy
Google App Engine应用程序的环境和部署管理器
README
Google App Engine应用程序的环境和部署管理器。
支持多个模块和多个部署目标(即部署到多个唯一的appid)。
致力于实现:http://12factor.net/config
目录
这是什么?它与appcfg.py有何不同?
这允许您将相同的代码/应用程序部署到多个目标环境(本地、多个不同的App Engine项目)。
关键的是,它还允许您为每个部署目标分别管理环境变量。
该工具使用appcfg.py
实际推送部署,但在部署时构建一个动态命令,覆盖目标应用程序ID和环境变量。
示例 deploy.json 文件
部署目标和环境在deploy.json
中配置,通常在项目根目录下。
以下是一个快速示例,其中alpha环境和live环境有不同的数据库凭据。
{ "targets": { "alpha": { "app_id": "myapp-alpha", "version": "alpha++", "require_label": false, "environment": { "APP_DB_USER": "root", "APP_DB_NAME": "DatabaseName", "APP_DB_SOCKET": "/cloudsql/myapp:instance" } }, "live": { "app_id": "myapp", "version": "2", "require_label": true, "environment": { "APP_DB_USER": "root", "APP_DB_NAME": "LiveDatabaseName", "APP_DB_SOCKET": "/cloudsql/myapp:instance" } } } }
本地开发环境
您可以在yaml文件中配置本地开发服务器的环境变量,如下所示
env_variables: APP_DB_USER: root APP_DB_NAME: localdb
用法
deploy.json
中配置的部署目标使用deploy
命令执行,该命令由Composer提供,位于vendor/bin
文件夹中。
例如,从项目根目录
将examples模块部署到alpha目标环境
vendor/bin/deploy --run --module=examples --target=alpha
创建模板deploy.json文件
vendor/bin/deploy --init
显示部署的appcfg.py
命令,但不运行它
vendor/bin/deploy --test --module=default --target=live
列出配置的部署目标
vendor/bin/deploy --verbose targets
默认模块
您可以使用app
或default
来部署默认的App Engine模块(该模块在您的app.yaml
文件中配置)。
目标
每个目标都是一个不同的部署,如“staging”和“production”。
它们必须有唯一的名称。
版本
如果您在版本名称后缀中加上++
,则我们将在每次部署时自动递增版本。
在上面的示例中,第一次部署获得alpha1
,第二次alpha2
,依此类推。
为了做到这一点,我们必须能够检测已经运行哪些版本。因此,如果您删除了所有版本,我们将从1开始。
标签
您可以使用以下标签提供版本
vendor/bin/deploy --run --module=examples --target=alpha --label=rel200
当代码部署时,标签将被附加到版本号上。例如,如果版本是“alpha3”
alpha3-rel200
如果您的配置将“require_label”定义为true,当您将该目标部署到该目标时,您将需要输入标签。这对于生产环境、管理功能发布等特别有用。
重要标签必须与以下正则表达式匹配:[a-zA-Z0-9_]+
(一个或多个字母数字或下划线)
代码分离,重定向
您可以从 deploy.json
文件中“重定向”到另一个文件,通常用于您的环境配置存储在另一个版本控制仓库的情况。
所以,这可能来自您的应用文件夹的部署文件
{ "file":"../vendor/my-company/my-app-environment/deploy.json" }
安装此工具
在您的 composer.json 的 require 部分
{ "venditan/appengine-deploy": "1.1.*" }
或者使用命令行
composer require venditan/appengine-deploy:1.1.*