Search code examples
azure-devopsazure-pipelinescicd

Azure DevOps Pipeline Variables Group Error


I have this problem. When trying to use variable groups with conditional templates pipeline gives me this error:

templates/vars-qa.yml (Line: 9, Col: 1): While parsing a block mapping, did not find expected key.

Here is the azure-pipelines.yml

trigger:
- main
- qa
- development
- staging



#//

resources:
- repo: self

variables:
  - ${{ if eq(variables['Build.SourceBranch'], 'refs/heads/main') }}:
    - template: templates/vars-qa.yml
  - ${{ if eq(variables['Build.SourceBranch'], 'refs/heads/qa') }}:
    - template: templates/vars-qa.yml
  - ${{ if eq(variables['Build.SourceBranch'], 'refs/heads/development') }}:
    - template: templates/vars-dev.yml
  - ${{ if eq(variables['Build.SourceBranch'], 'refs/heads/staging') }}:
    - template: templates/vars-qa.yml

stages:
  - template: templates/transform-settings.yml
  - template: templates/build-image.yml

And vars-qa.yml where error is happen:

variables:
  imageRepository: 'service-qa'
  dockerRegistryServiceConnection: 'dec124f0-814f-4511-94d3-b3396698767508'
  containerRegistry: 'test.azurecr.io'
  imagePullSecret: 'test1334fe31-auth'
  dockerfilePath: '**/Dockerfile'
  vmImageName: 'ubuntu-latest'
  tag: '$(Build.BuildId)'
- group: dev-secrets
- name: ConnectionStrings.DefaultConnection
  value: $(psql-conn-str-dev)

This is happen in -group: dev-secrets.The group is existing and the psql-conn-str-dev already to.I have tried with $(variables.psql-conn-str-dev) but result was the same. Everything works correctly without templates


Solution

  • There is a problem in the indent of your template YAML. You cannot define a sequence item when in a mapping.

    Please try and use an online YAML validator tool to check this: https://codebeautify.org/yaml-validator

    I converted your variables to sequence items. I think this will work better:

    variables:
    - name:  imageRepository
      value: 'service-qa'
    - name:  dockerRegistryServiceConnection
      value: 'dec124f0-814f-4511-94d3-b3396698767508'
    - name:  containerRegistry
      value: 'test.azurecr.io'
    - name:  imagePullSecret
      value: 'test1334fe31-auth'
    - name: dockerfilePath
      value: '**/Dockerfile'
    - name:  vmImageName
      value: 'ubuntu-latest'
    - name: tag
      value: '$(Build.BuildId)'
    - group: dev-secrets
    - name: ConnectionStrings.DefaultConnection
      value: $(psql-conn-str-dev)