2

Is it possible to use multiline in YAML in Azure Pipelines tasks? For instance for the ARM deployment task, there is an overrideParameters property. It would be nice if this could be split accross several lines instead of putting everything in one line:

- task: AzureResourceManagerTemplateDeployment@3
          displayName: 'ARM deploy MyFunctionAPP'
          inputs:
            deploymentScope: 'Resource Group'
            azureResourceManagerConnection: ${{ parameters.serviceConnection }}
            subscriptionId: ${{ parameters.subscriptionId }}
            action: 'Create Or Update Resource Group'
            resourceGroupName: ${{ parameters.resourceGroupName }}
            location: 'West Europe'
            templateLocation: 'Linked artifact'
            csmFile: '$(ARMtemplatesPath)\MyFunctionAPP\template.json'
            csmParametersFile: '$(ARMtemplatesPath)\MyFunctionAPP\parameters.json'
            deploymentMode: 'Incremental'
            overrideParameters: '-environment_name ${{ parameters.environmentName }} -vnetAddressPrefix ${{ parameters.vnetAddressPrefix }} -subnet1Prefix ${{ parameters.subnet1Prefix }} -APIkey ${{ parameters.APIkey }} -queueName ${{ parameters.queueNameMyQueue }} -SendGridAPIkey ${{ parameters.SendGridAPIkey }} -StorageConnectionAppSetting ${{ parameters.StorageConnectionAppSetting }}'

Is it somehow possible to split the overrideParameters values on multiple lines?

Oliver Nilsen
  • 1,017
  • 2
  • 12
  • 32

2 Answers2

5

This has worked for me:

overrideParameters: >-
  -environment_name "${{ parameters.environmentName }}" 
  -vnetAddressPrefix "${{ parameters.vnetAddressPrefix }}" 
  -subnet1Prefix "${{ parameters.subnet1Prefix }}"
  -APIkey "${{ parameters.APIkey }}"
  -queueName "${{ parameters.queueNameMyQueue }}" 
  -SendGridAPIkey "${{ parameters.SendGridAPIkey }}"
  -StorageConnectionAppSetting "${{ parameters.StorageConnectionAppSetting }}"

So using >- on a single line and then using double-quotes to surround settings values works.

Oliver Nilsen
  • 1,017
  • 2
  • 12
  • 32
  • More inconsistent cryptic undocumented YAML. Oh well, it works. Where did you find this? – Nick.Mc May 31 '22 at 10:45
  • I cannot remember to be honest. It was some time ago. But I remember that it was a lot of trial and error before I made it work. – Oliver Nilsen Jun 11 '22 at 19:10
2

Is it somehow possible to split the overrideParameters values on multiple lines?

According to the document Expressions, we could use a pipe character (|) for multiline strings:

- task: AzureResourceManagerTemplateDeployment@3
          displayName: 'ARM deploy MyFunctionAPP'
          inputs:
            deploymentScope: 'Resource Group'
            azureResourceManagerConnection: ${{ parameters.serviceConnection }}
            subscriptionId: ${{ parameters.subscriptionId }}
            action: 'Create Or Update Resource Group'
            resourceGroupName: ${{ parameters.resourceGroupName }}
            location: 'West Europe'
            templateLocation: 'Linked artifact'
            csmFile: '$(ARMtemplatesPath)\MyFunctionAPP\template.json'
            csmParametersFile: '$(ARMtemplatesPath)\MyFunctionAPP\parameters.json'
            deploymentMode: 'Incremental'
            overrideParameters: |
             -environment_name ${{ parameters.environmentName }}
             -vnetAddressPrefix ${{ parameters.vnetAddressPrefix }}
             -subnet1Prefix ${{ parameters.subnet1Prefix }}
             -APIkey ${{ parameters.APIkey }}
             -queueName ${{ parameters.queueNameMyQueue }}
             -SendGridAPIkey ${{ parameters.SendGridAPIkey }}
             -StorageConnectionAppSetting ${{ parameters.StorageConnectionAppSetting }}

You could check this thread for some more details.

Leo Liu
  • 71,098
  • 10
  • 114
  • 135