如何在代理阶段的多台服务器上触发发布定义中存在的一项任务?

How to trigger one task present in Release Definition on multiple servers in Agent Phase?

我正在使用 TFS 2017 更新 3,在 TFS 2017 中,我有一个发布定义,其中我有一个命令行任务,我通过向它传递如下参数来调用自动化应用程序的 cli

"C:\Program Files (x86)\Auto-2019-Q1\Auto-Cli" -scriptName "Driver_Smoke.xlsx" -scriptLocation "C:\Next_Gen"

它成功地 运行 应用程序,但现在我必须 运行 在我已经配置构建代理的多台服务器上执行相同的任务,以便可以在多台服务器上执行自动化同时。

为此,我在发布定义中添加了一个代理阶段,并在需求中添加了代理名称,但它只能在一台服务器上工作,不能同时在另一台服务器上工作。

不过,我可以添加另一个代理阶段选项,然后提供另一个服务器的代理名称,但我将不得不等待之前的代理阶段任务完成。这会花费很多时间。

我试着给出两个 agent.name 的要求,但它不是那样工作的。那么,是否可以在发布定义中同时在多个服务器上 运行 一个任务?

我使用 TFS 发布定义中的现有任务找到了解决此问题的方法。我所做的是,

  1. 我在每台服务器上配置了两个部署代理。
  2. 将上面提到的cli命令复制到记事本中并创建了一个批处理文件。
  3. 在任务计划程序中创建了一个任务,以便在构建代理服务启动时执行批处理文件。
  4. 在 Release 定义中,一旦包的部署完成,之后我们需要 运行 使用该工具进行自动化,我在 RD 中添加了一个 运行 代理任务并关联我需要 运行 自动化工具的构建代理名称之一,在 运行 代理任务下,我添加了 3 个任务,即一个启动服务和两个停止服务的任务,您可以重复需要 运行 自动化工具通过 CI.
  5. 的多个服务器的同一组任务
  6. 所以,这里当部署完成时,运行 on Agent 任务开始,它首先停止服务,然后启动服务,因此在任务调度程序中创建的任务被触发,工具被执行,然后您可以停止服务,因为您不再需要 运行 的服务。 通过使用这个过程,除了几秒钟之外,我不再需要等待很长时间才能同时在多个服务器上 运行 自动化工具。