如何使用VSTS发布过程并行跨多个服务器部署分布式系统

问题描述 投票:-1回答:2

这是我的场景,我在Visual Studio中有一个任务组列表,其中包含MachineName(目标服务器)的参数:

Task1
Task2
Task3
Task4

和一组服务器:

SVR1
SVR2
SVR3
SVR4

目前,我有一个有效的部署管道(所有使用[None] Parallelism选项在同一个代理上):

Task1(SVR1)
Task1(SVR2)
Task1(SVR3)
Task1(SVR4)

Task2(SVR1)
Task2(SVR2)
Task2(SVR3)
Task2(SVR4)
etc...

必须以特定顺序执行这些任务,并且在所有服务器都已收到上一个任务之前,任何服务器上都不应启动任务。然而,当前的部署过程不是特别可扩展的。每次我们添加一个额外的节点时,它都会增加大约1分20秒的部署时间。

我想做的是:

Execute Task1 on all servers (Wait until all are complete)
Execute Task2 on all servers (Wait until all are complete)
Execute Task3 on all servers (Wait until all are complete)
etc.. you get the picture.

我目前没有找到一个在线的例子,这正是我需要的,我没有太多使用VSTS并行部署的经验。

有这么简单的方法吗?我是否需要运行多个代理才能使其正常工作,还是可以在同一个代理上运行多个并行任务?

提前致谢

deployment parallel-processing azure-devops azure-pipelines-release-pipeline
2个回答
1
投票

您可以为每个任务组添加多个代理阶段(task1,task2等...):

  1. 向商店服务器添加变量(例如:name:servers; value:SVR1,SVR2,SVR3,SVR4
  2. 为每个任务组添加多个代理阶段(task1,task2等...)
  3. 配置每个代理阶段的执行计划(在Multipliers输入框中选择阶段>检查多配置选项>指定servers(step1变量)
  4. 然后你可以从任务中的servers变量获得服务器

另一方面,您可以在同一台计算机和池中配置多个代理,然后在每个阶段的“最大代理程序输入数”框中指定代理程序编号,以减少构建/发布时间。


0
投票

由于您只有一个管道,因此任务将不同时串行执行。

如果要在不同服务器之间同时部署任务,则应购买其他管道。

© www.soinside.com 2019 - 2024. All rights reserved.