我需要为不同客户端独立部署Single Tenanter.Net MVC应用程序创建YAML管道的建议。
- 应用程序类型:.Net MVC Web API
- Web服务器:IIS 10
- 数据库:MS SQL Server
- 环境:专用数据中心
- 客户/租户数量:150+
- 部署:为每个客户端/租户创建一个单独的IIS Web应用程序。此外,还会为每个客户端创建一个单独的数据库
- 预期部署:手动模式(不考虑CD,因为CI和测试套件还不可用(
如果你能指导我以下几点。
- 应该如何创建管道,以便我可以为每个客户端/租户使用不同的配置参数?(例如数据库名称和连接字符串(但同时,用于部署生成的发布的通用脚本
- 我应该创建一个管道还是应该创建多个管道
- 在这种情况下,我应该如何有效地使用发布、阶段和作业
- 如果我能为每个客户端获得一些好的手动独立部署文章,我想学习一下
通常,如果您想部署到不同的环境,可以为管道中的每个环境设置一个阶段。然而,考虑到您有150多种不同的配置,在管道中设置150多种阶段是非常痛苦的。
如果所有部署都具有相同的部署步骤(相同的脚本、相同的输入参数(,但输入参数的值不同,则可以尝试在管道中使用多作业配置(矩阵(。
通过这种方式,您不需要为每个配置设置阶段或作业,只需要设置具有所有常见部署步骤的阶段或作业即可。但是您需要列举您需要的所有配置(150+(。当运行管道时,它将生成150多个矩阵作业,这些作业具有相同的部署步骤,但输入参数的值不同。
[更新]
只是好奇,在这种多作业配置的情况下,所有150多个安装都会一次性触发,对吧?
触发管道运行后,所有105+个矩阵作业都将被触发并排队。然而,通常情况下,并不是所有150多个作业都会同时启动以并行运行。这取决于您设置的maxParallel
以及可以为运行分配多少可用代理。
我无法选择开始部署的方式,比如说,仅针对客户端的5个。
如果您希望先对某些客户端执行部署,然后再对其他客户端执行,可以尝试使用stage。
例如,在stage_1
中,执行前5个客户端的部署作业(多作业配置(。在stage_1
之后,为其他几个客户端启动stage_2
,然后为其他客户端启动stage_3
,等等
您可以使用dependsOn
键设置阶段的执行顺序,并使用condition
密钥设置阶段仅在满足指定条件时运行。
要查看更多详细信息,您可以在添加阶段、依赖项,&条件";。