API 管理开发人员门户 CI/CD

Posted

技术标签:

【中文标题】API 管理开发人员门户 CI/CD【英文标题】:API Management Developer Portal CI/CD 【发布时间】:2021-08-06 21:07:48 【问题描述】:

我希望为开发人员门户中的内容设置 CI/CD 流程,以便我们可以在开发环境中进行更改并将它们提升到更高的环境。根据我的发现,这似乎包含有关执行此操作的建议方式的信息:

https://docs.microsoft.com/en-us/azure/api-management/automate-portal-deployments

链接到这个仓库:

https://github.com/Azure/api-management-developer-portal

据我所知,该存储库中的大部分代码。如果您想自行托管,则适用于开发人员门户本身。我对自我托管不感兴趣,我只对其中包含的脚本感兴趣,因为它们允许我在环境之间提取和发布内容。 是否有一个存储库只包含运行脚本所需的代码(特别是 v3)? 我宁愿避免手动检查和删除与脚本无关的文件,因为我不这样做'不知道/理解它们都是什么。

如果存在这样的存储库,它将启用我的理想方案,即分叉该存储库,运行“捕获”脚本,然后将提取的开发人员门户内容检入新存储库。

【问题讨论】:

【参考方案1】:

那么,为什么不直接复制scripts.v3 文件夹并使用它呢?正如您所注意到的,如果您没有运行自托管版本,则不需要其他文件。所以你可以简单地复制粘贴它们。这些脚本只不过是用 node.js 编写的Azure REST API 端点的客户端。它们可以完全独立于存储库的其余部分运行。


如果您不喜欢 node.js,您甚至可以编写自己的脚本来部署开发者门户 - 使用您选择的语言。

开发者门户包含Content Types,其中包含Content Items。另一件事是存储在 APIM blob 存储中的媒体(字体、图像等)。这两件事决定了 Developer Portal 的外观。

所以你需要做的就是:

    从一个实例中获取所有内容项(使用 Azure REST API)并将它们放到另一个 APIM 连接到 APIM blob 存储并获取所有媒体 blob 并将它们放入另一个 APIM blob 存储。您也可以使用 Azure REST API 获取 Blob 存储的 SAS url。

如果您仔细检查,这些脚本正在做同样的事情:

capture.js - 将从给定 APIM 实例中获取所有文件并将其放入您的本地文件夹中 generate.js - 将从您的本地文件夹中获取文件并将其放入您选择的 APIM 实例中 migrate.js - 只是前两个脚本的组合。它会从一个实例中获取文件并将其放到另一个实例中。 cleanup.js - 与开发人员门户中的 reset 按钮相同。它会恢复默认状态。

【讨论】:

截至今天,除了脚本文件夹中的内容之外,这些脚本不需要任何其他内容,但它们位于同一个存储库中的事实让我很难保证这将是真实的向前。此外,我宁愿不必自己维护这些脚本,因为我觉得它们的开发人员可能最了解这些脚本。拥有另一个存储库可以让我在我认为合适的情况下分叉并引入新的更改/更新,而不必担心所有其他不相关的代码。

以上是关于API 管理开发人员门户 CI/CD的主要内容,如果未能解决你的问题,请参考以下文章

带有开发人员门户内容的 Azure API 管理实例副本

在 Azure API 管理中查看已发布的无隐私浏览模式的开发者门户

Azure 门户、开发人员门户和 Postman 之间的 APIM 响应标头不同

什么是CI/CD

CI/CD笔记:《持续交付:发布可靠软件的系统方法》

CI/CD笔记:《持续交付:发布可靠软件的系统方法》