在Azure VSTS中添加Azure订阅作为任务组的参数

时间:2018-04-17 23:27:30

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

我正在尝试创建一个任务组,其中包括将一些应用程序部署到Azure AppService等几个任务。我的想法是使用此任务组部署到不同的环境(即Dev,QA,UAT,Prod)。 但是,我无法将Azure订阅转换为变量,该变量当前是一个流程参数。有解决方案吗?

2 个答案:

答案 0 :(得分:0)

您可以在Azure订阅中使用变量,但该值应该是相关端点的实际值。

  1. 创建一个启用了调试的新版本/构建定义(将system.debug变量设置为true)并添加Azure PowerShell任务以获取实际值。
  2. 开始/队列发布/构建,然后检查日志,你可以找到这样的日志:## [debug] INPUT_CONNECTEDSERVICENAMEARM:' {actual value}'
  3. 编辑任务组,在Azure订阅输入框中指定变量(例如$(sub))>保存
  4. 编辑您的发布定义,添加具有该实际值的变量(例如mySub)(步骤1)
  5. 任务>选择相关的任务组>在$(mySub)(按步骤3)输入框中指定变量(例如sub)。
  6. 另一方面,您可以直接为相关任务组选择azure订阅(步骤3,然后编辑环境任务>直接选择Azure订阅)

答案 1 :(得分:0)

虽然有一些示例表明您可以为服务连接名称使用变量,但也有一些文档表明不支持服务连接的变量(例如,https://docs.microsoft.com/en-us/azure/devops/pipelines/library/service-endpoints?view=azure-devops&tabs=yaml#use-a-service-connection)。

我在自己的管道中遇到过这个问题,并使用模板表达式解决了这个问题:

    ${{ if eq(parameters.environmentType, 'dev') }}:
      azureResourceManagerConnection: Azure Dev
    ${{ if eq(parameters.environmentType, 'test') }}:
      azureResourceManagerConnection: Azure Test
    ${{ if eq(parameters.environmentType, 'prod') }}:
      azureResourceManagerConnection: Azure Prod