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.*