您如何在生产和开发中重复使用相同的 openapi.yaml 文件

How do you reuse the same openapi.yaml file for production and development

我们正在使用 GitOps 模型来部署我们的软件。 dev 分支中的所有内容都进入开发环境,main 中的所有内容都部署到生产环境中。除了我们使用依赖 openapi.yamlhost 参数的 Google Cloud Endpoints 之外,一切都很好。只有一个值的空间,所以我们必须记住为每个部署更改它,这不允许我们进行完全自动化的部署。

使用 Google Cloud Endpoints 时如何管理相同的 openapi.yaml 定义?

Swagger OpenAPI guide的FAQ部分明确提到,我们可以指定多个主机,例如开发、测试和生产,但用于 OpenAPI 3.0。 OpenAPI2.0 仅支持每个 API 规范的一个主机(如果将 HTTP 和 HTTPS 视为不同的主机,则为两个)。针对多个主机的一种可能方法是从您的规范中省略主机和方案,并从每个主机提供服务。在这种情况下,规范的每个副本都将针对相应的主机。

根据 Google documentation Cloud Endpoints currently support OpenAPI version 2.0. A feature request has been filed for support of version 3.0 but there have been no releases. You can follow for the updates here.

官方文档中给出了一个例子,看看对你有没有帮助use-case。

  1. Basic structure of an OpenAPI document,注意“主机”是如何用“YOUR-PROJECT-ID.appspot.com”参数化的。
  2. Deploying the Endpoints configuration,使用提供的脚本“./deploy_api.sh”
  3. Source code 对于 deploy_api.sh

不同环境属性管理的一个常见解决方案是创建不同的构建配置文件,并创建不同的环境特定属性文件,如 openapi_dev.yaml、openapi_qa.yaml、openapi_prod.yaml,并提供一个基于正在使用的配置文件(dev/qa/prod)。有关更多详细信息,请参阅 here

GitOps-style continuous delivery with Cloud Build 中记录了另一种方法,其中建议使用多分支 multi-repository 方法。