您能否在发布管理中将一个 PowerShell 任务的输出传输到另一个任务?

Can you pipe the output of one PowerShell task to another in release management?

这是一个示例场景:

  1. 部署 ARM 模板的 "Azure PowerShell" 任务。 ARM 模板所做的只是创建一个应用服务计划、一个 Web 应用程序和一个存储帐户。
  2. 部署 Web 应用程序的 "Azure Web App Deployment" 任务。
  3. “Azure PowerShell 任务更新 Web 应用的配置以包含对从 ARM 模板生成的存储密钥的引用。

如何将第一个任务的输出提供给第三个任务?还有其他方法可以解决这个问题吗?

可以通过 'output' 部分 'chain' ARM 模板将一个模板的状态共享到另一个模板。

因此您可以指定一个模板的输出,然后通过调用它的 Powershell 脚本选择该输出,或者您可以将模板链接在一起,这样它们都 运行 来自一个 [=19] =] 打电话。使用 Web 应用程序配置任务的模板直接获取部署模板的输出。

这里有一些很好的文档 - Sharing state in Azure Resource Manager templates

您可以在 VSTS 中使用任务日志记录命令 "output" 来自一个任务的变量并在另一个任务中读取它们。您的示例中的第一个 Azure PS 任务可以记录一个输出变量,稍后可以在最后一个任务中读取该变量。有关这些日志记录命令的格式,请参阅 https://github.com/Microsoft/vso-agent-tasks/blob/master/docs/authoring/commands.md

Paul 完成此任务的另一种方法是在您的第一个任务 (Azure PowerShell) 中完成所有 3 个任务 - 您也可以将 1 和 3 组合起来,然后将 2 个分开,两者都应该适合您使用股票 "tasks" 在 VSTS 中。

因此,您工作流程中的第一步可以创建网络应用程序(等)、更新配置并部署网络应用程序。如果不希望在模板中部署 webapp,您可以在工作流程中合并步骤 1 和 3,并单独进行站点部署。看看这些例子,结合它们做你想做的事(我无法快速找到一个例子):

https://github.com/davidebbo/AzureWebsitesSamples/blob/master/ARMTemplates/WebAppDeployment.json(这显示了如何进行应用配置)

您可以在创建存储帐户的同一部署中引用您的存储密钥,请参阅:https://github.com/rjmax/ArmExamples/blob/fa4359bd393692bbb07b4460636c5b754191e42d/listKeysSample.json)

https://github.com/davidebbo/AzureWebsitesSamples/blob/master/ARMTemplates/WordpressTemplateWebDeployDependency.json(这显示了如何在模板中进行 webdeploy)