在发布期间,如何从任务中的部署组中获取部署到另一个作业的服务器名称列表?
During a release, how to get a list of server names deployed to from a deployment group in a task to use in another job?
获取部署到的服务器名称列表的方法是什么,以便它们可以用于同一部署管道中具有不同代理的另一个作业?
我们在一个部署组中有许多服务器被部署到。我们想将自动化测试服务器指向每个环境,以确认部署是否正确。因此,我们需要已部署的服务器列表。
由于服务器列表可能会增加或减少,我们无法将所有服务器硬编码到一个变量中。
作为解决方法,我们创建了一个 Powershell 步骤来调用 REST API 来获取部署组机器的详细信息。但是,我们希望在 Azure Devops 界面中使用变量/输出等来实现这一点。
据我所知,没有简单的方法可以达到您想要的效果。根据 designer documentation:
"When you specify multiple jobs in a build pipeline, they run in parallel by default. You can specify the order in which jobs must execute by configuring dependencies between jobs. Job dependencies are not yet supported in release pipelines. Multiple jobs in a release pipeline run in sequence."
我想这是由于允许作业在 x 上 运行 所固有的复杂性机器。
yaml documentation doesn't seem to make the same distinction, but I think it is still a not yet feature, as as a whole seem to be a roadmap item。
需要注意的一件事是,您可能通过命令设置的变量不会在阶段之间持续存在。如果您想知道在一个阶段部署的部署服务器,您将需要在您正在执行的测试代理阶段找到那些。
不过我认为您已经回答了自己的问题。我相信您得到的大部分答案都是使用 API 来获取您想要的信息。话虽这么说,我认为唯一真正万无一失的方法是在部署组阶段添加一个步骤并让它 运行 在部署服务器上进行测试。
不是最干净的解决方案,但您也可以让部署组 trigger a build definition 传递服务器名称。构建任务将只包含您想要 运行 的测试部分。您可以让该发布步骤取决于构建定义的 completion/status。
在实施您决定的任何内容时要牢记一些功能:
获取部署到的服务器名称列表的方法是什么,以便它们可以用于同一部署管道中具有不同代理的另一个作业?
我们在一个部署组中有许多服务器被部署到。我们想将自动化测试服务器指向每个环境,以确认部署是否正确。因此,我们需要已部署的服务器列表。
由于服务器列表可能会增加或减少,我们无法将所有服务器硬编码到一个变量中。
作为解决方法,我们创建了一个 Powershell 步骤来调用 REST API 来获取部署组机器的详细信息。但是,我们希望在 Azure Devops 界面中使用变量/输出等来实现这一点。
据我所知,没有简单的方法可以达到您想要的效果。根据 designer documentation:
"When you specify multiple jobs in a build pipeline, they run in parallel by default. You can specify the order in which jobs must execute by configuring dependencies between jobs. Job dependencies are not yet supported in release pipelines. Multiple jobs in a release pipeline run in sequence."
我想这是由于允许作业在 x 上 运行 所固有的复杂性机器。
yaml documentation doesn't seem to make the same distinction, but I think it is still a not yet feature, as
需要注意的一件事是,您可能通过命令设置的变量不会在阶段之间持续存在。如果您想知道在一个阶段部署的部署服务器,您将需要在您正在执行的测试代理阶段找到那些。
不过我认为您已经回答了自己的问题。我相信您得到的大部分答案都是使用 API 来获取您想要的信息。话虽这么说,我认为唯一真正万无一失的方法是在部署组阶段添加一个步骤并让它 运行 在部署服务器上进行测试。
不是最干净的解决方案,但您也可以让部署组 trigger a build definition 传递服务器名称。构建任务将只包含您想要 运行 的测试部分。您可以让该发布步骤取决于构建定义的 completion/status。
在实施您决定的任何内容时要牢记一些功能: