问题描述
我需要有关为不同客户端独立部署单租户 .Net MVC 应用程序创建 YAML 管道的建议。
- 应用程序类型:.Net MVC Web API
- 网络服务器:IIS 10
- 数据库:MS sql Server
- 环境:私有数据中心
- 客户/租户数量:150+
- 部署:为每个客户端/租户创建一个单独的 IIS Web 应用程序。此外,还会为每个客户创建一个单独的数据库。
- 预期部署:手动模式(不考虑 CD,因为 CI 和测试套件尚不可用)。
如果你能指导我以下几点。
- 应该如何创建管道,以便我可以为每个客户端/租户使用不同的配置参数? (例如数据库名称和连接字符串)但同时,用于部署生成发布的通用脚本?
- 我应该创建一个管道还是应该有多个?
- 对于这种情况,我应该如何有效地使用发布、阶段和作业?
- 如果我有一些好的文章可以为每个客户端手动独立部署,我想学习。
解决方法
一般来说,如果你想部署到不同的环境,你可以为管道中的每个环境设置一个阶段。但是,考虑到您有 150 多个不同的配置,在管道中设置 150 多个阶段是非常痛苦的。
如果所有部署都有相同的部署步骤(相同的脚本,相同的输入参数),但输入参数的值不同,您可以尝试在管道中使用Multi-job configuration(Matrix)。
通过这种方式,您无需为每个配置设置一个阶段或作业,您只需要设置一个包含所有常见部署步骤的阶段或作业。但是您需要枚举您需要的所有配置(150+)。在运行流水线时,它将生成 150 多个具有相同部署步骤但输入参数值不同的矩阵作业。
[更新]
只是好奇,在这种多任务配置的情况下,150+个安装都会被一次性触发,对吗?
触发流水线运行后,所有 105+ 矩阵作业都将被触发并进入队列。但是,通常不会同时启动所有 150 多个作业以并行运行。这取决于您设置的 maxParallel
以及可以为运行分配多少可用代理。
我无法选择开始部署的方式,假设只有 5 个客户端。
如果您希望可以先为某些客户端执行部署,然后再为其他客户端执行部署,您可以尝试使用阶段。
例如,在 stage_1
中,为前 5 个客户端执行部署作业(多作业配置)。在 stage_1
之后,为另外几个客户端启动 stage_2
,然后为其他客户端启动 stage_3
,等等。
可以使用dependsOn
键设置stage的执行顺序,使用condition
键设置stage只运行满足指定条件时。
要查看更多详细信息,您可以查看“Add stages,dependencies,& conditions”。