在发行期间,如何从任务中的部署组中获取要部署到的服务器名称的列表,以用于其他作业?

时间:2019-02-08 17:51:41

标签: azure-devops azure-pipelines-release-pipeline

如何获取已部署到的服务器名称的列表,以便可以在同一部署管道中将它们用于具有不同代理的另一个作业中?

我们在部署组中有许多要部署到的服务器。我们希望将自动化测试服务器指向这些环境中的每一个,以确认部署正确。因此,我们需要已部署服务器的列表。

由于服务器列表可能会增加或缩小,因此我们无法将所有服务器硬编码为变量。

作为一种解决方法,我们创建了一个Powershell步骤来调用REST API以获取部署组计算机的详细信息。但是,我们希望使用Azure Devops界面中的变量/输出等来实现此目的。

2 个答案:

答案 0 :(得分:1)

据我所知,没有简单的方法可以实现所需的功能。按照designer documentation

  

”当您在 build 管道中指定多个作业时,默认情况下它们并行运行。您可以通过配置来指定作业必须执行的顺序作业之间的依赖关系 发布 管道中尚不支持。发布管道中的多个作业按顺序运行。”

我想这是由于允许在 x 台计算机上运行作业所固有的增加的复杂性。

yaml documentation似乎没有相同的区别,但我认为它仍然是 尚未 的功能,例如yaml release pipelines总体看来是roadmap item

答案 1 :(得分:1)

要注意的一件事是,您可能通过命令设置的变量不会在阶段之间持久存在。如果您想知道一个阶段中已部署的部署服务器,则需要在您正在执行的测试代理阶段中找到它们。

我认为您虽然回答了自己的问题。我相信您获得的大多数答案将是使用API​​来获取所需的信息。话虽这么说,唯一真正的保证是我认为您应该在部署组阶段添加一个步骤,并让它在部署服务器上运行测试。

这不是最干净的解决方案,但是您也可以让部署组trigger a build definition传递服务器名称。构建任务将只包含您要运行的测试部分。您可以根据发布定义的完成情况/状态来执行发布步骤。

实施您决定的内容时要记住的一些功能:

Automatically deploy to new targets in a deployment group

Deploy to failed targets in a Deployment Group