mijo/gae-flow

使用 composer.json 在 Google App Engine 上部署,并以相同的逻辑在开发中提供服务。

1.0.2 2019-12-05 19:00 UTC

This package is auto-updated.

Last update: 2024-08-29 05:18:36 UTC


README

Google App Engine for PHP 的部署和开发服务器。这不是一个通用库,而是一种有见地的做事方式。Google App Engine 默认没有好的方式来存储秘密。我选择在部署时将环境变量添加到 app.yaml 中。这样既可以从您的本地机器,也可以从管道中工作。我在用户的家目录中存储的正常 propfile 中的秘密。这样可以在同一 Google App Engine 项目中部署的应用程序之间共享。

为了使生产环境和开发环境之间有持续的方式,我们对本地开发中使用的变量也这样做。

不用说,这种方法最适合独立项目,或者开发者较少的项目。

环境变量

这些存储在标准的 INI 文件 中,这些文件必须放置在用户家目录中的当前项目之外。

  • ~/.{{myprojectkey}}/prod.env 用于生产部署。
  • ~/.{{myprojectkey}}/dev.env 用于 devserver。

这样它们可以在同一项目中共享,并在项目外部保持相对安全。不是理想的,但至少您不需要将文件检入项目中。

脚本

这个库包含两个脚本,deployserve。它们通过 composer.json 的 "extra" 字段进行配置。

部署(到 Google App Engine)

这使用 gcloud 命令行工具 进行部署。这必须在 PATH 上才能正常工作。

配置

在 composer.json 中,将以下内容添加到 额外数据字段

{
  "extra": {
    "gcloud:project": "myprojectkey",
  }
}

服务(使用内置服务器)

这只是一个简单的包装,围绕着 PHP 内置服务器。但它确实调用一个配置为模仿使用 Google App Engine 部署应用程序时的默认行为的路由脚本。这不会读取 app.yaml 来解析静态路由。但如果你有一个相当简单的设置,这不应该成问题。

配置

在 composer.json 中,将以下内容添加到 额外数据字段

{
  "extra": {
    "serve:addr": "0.0.0.0",
    "serve:docroot": "/",
    "serve:entrypoint": "entrypoint.php",
    "serve:port": 2004
  }
}

在脚本部分,您可以/应该添加部署命令。

{
  "scripts": {
    "deploy": "GaeFlow\\Script::deploy",
    "serve": "GaeFlow\\Script::serve"
  }
}

如果您想在部署脚本之前运行脚本。例如构建前端,可以通过传递一个命令数组来完成,如下所示

{
  "scripts": {
    "deploy": [
      "yarn build",
      "GaeFlow\\Script::deploy"
    ]
  }
}

测试

可以使用 composer test 运行测试,项目使用 phpunit 作为测试运行器。