【发布时间】:2026-02-16 16:35:01
【问题描述】:
这是我的场景,我在 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 进行并行部署方面没有太多经验。
有没有简单的方法来做到这一点?我是否需要运行多个代理才能使其正常工作,还是可以在同一个代理上运行多个并行任务?
提前致谢
【问题讨论】:
-
你能解释一下为什么要在所有服务器上执行task1然后执行task2等的原因吗?既然部署在不同的服务器上,是不是应该分别部署到服务器上(比如在SVR1上执行task1,在SVR2上不执行task1,那么在SVR1上执行task2就不用等待了)?
-
@MarinaLiu-MSFT - 这是一个运行在多个节点上的分布式奥尔良应用程序。 Task1 是“停止所有服务”。 Task2 然后是“卸载所有旧服务”。 Task3 - '将新文件复制到服务器' Task4 - '安装所有新服务'。这就是为什么我们要按顺序执行它们。
-
我对奥尔良不熟悉。但是如果你真的想将这四个任务依次部署到不同的服务器上,你应该在你的发布定义中添加 16 个任务。
标签: deployment parallel-processing azure-devops azure-pipelines-release-pipeline