如何在一个 git 存储库中维护许多 Azure 资源和部署?

How to maintain many Azure resources and deployments in one git repo?

我有一个项目,它包含一个 Azure web 应用程序、一个 Azure 上的 PostgreSQL 和多个用于后台 ETL 工作流的 Azure 函数。我还有一个本地 Python 包,我需要从 webapp 和 Azure 函数访问它。

如何从单个 git 存储库构建这些资源的配置和脚本部署?

任何关于好的示例或教程的建议或指示将不胜感激。 我看过的所有 Azure 教程都只针对小而简单的项目。

目前,我已经手写了一个 admin.py 脚本,例如通过创建 Python 包、为每个资源创建 ZIP 文件并进行 ZIP 部署来进行 Web 应用程序和功能部署。这变得越来越混乱,现在我想要 QA 和 PROD 版本,我需要传递机密以便可以访问数据库,而且它变得越来越复杂。有没有一种很好的方法来构建这个打包/部署,或者有一个工具来帮助它?对我来说,把所有东西都放在 Kubernetes 中不是解决方案,至少 DB 已经存在。此外,Azure DevOps 不是一个选项,我们正在使用 Gitlab CI,所以最终我想要一个可以 运行 on CI/CD 的解决方案。

不确定这是否有助于完成,但我们开始吧。

不要使用手写的 admin.py 脚本,而是尝试使用 yaml 管道流。对于 Gitlab,他们也有 https://docs.gitlab.com/ee/ci/yaml/ that you can use to get started. From what you've indicated, I would recommend having several job steps in your yaml pipeline that will build and package your web and function apps. For deployment, you can make use of environments. Have a look at https://docs.gitlab.com/ee/ci/multi_project_pipelines.html,这说明了如何创建下游管道。

从部署的角度来看,我发现 Azure 和 GitLab 之间的当前集成给我两个建议:

  1. 利用 yaml 的 script 命令继续压缩您的工件,使用 Azure CLI(我假设您可以在管道期间安装这些工具)进行压缩部署。
  2. 将您的代码保存在 GitLab 存储库中,并利用 Azure Pipelines 为您处理 CI/CD。

希望对您有所帮助。