azure-devopsdeploymentazure-pipelinesazure-pipelines-yaml

Azure yaml pipeline "Expected mapping end"


I want to define a deployment job (via a template) but, running my azure pipeline, the following errors is displayed:

job-deploy.yml@templates: Expected mapping end

Where is my issue ?

Following the template called:

parameters:
- name: clientBaseName
  type: string
- name: environment
  type: string
- name: aks
  type: string
- name: helm
  type: string
  default: 'helm3'
  values: 
  - 'helm2'
  - 'helm3'

jobs:
- deployment: deploy_{{ parameters.environment }}
  displayName: 'Deploy a MyPlace client.'
  environment: approvals-demo-core
  strategy:
    runOnce:
      preDeploy:
        steps:
          - template: ../tasks/task-chart-setup.yml
            parameters:
              helm: ${{ parameters.helm }}
      deploy:
        steps:
        - template: ../tasks/task-chart-deploy.yml
          parameters:
            type: data
            namespace: ${{ parameters.clientBaseName }}-{{ parameters.environment }}
            charts: ./charts/data
            values: ./output/{{ parameters.environment }}/data.yaml
            aks: {{ parameters.aks }}

        - template: ../tasks/task-chart-deploy.yml
          parameters:
            type: services
            namespace: ${{ parameters.clientBaseName }}-{{ parameters.environment }}
            charts: ./charts/services
            values: ./output/{{ parameters.environment }}/services.yaml
            aks: {{ parameters.aks }}

        - template: ../tasks/task-chart-deploy.yml
          parameters:
            type: jobs
            namespace: ${{ parameters.clientBaseName }}-{{ parameters.environment }}
            charts: ./charts/jobs
            values: ./output/{{ parameters.environment }}/jobs.yaml
            aks: {{ parameters.aks }}

Solution

  • Expected mapping end usually refers to the error in the yaml syntax format. "$" is missing from the reference variable in your yaml file.

    You need to change {{ parameters.environment }} to ${{ parameters.environment }}

    parameters:
    - name: clientBaseName
      type: string
    - name: environment
      type: string
    - name: aks
      type: string
    - name: helm
      type: string
      default: 'helm3'
      values: 
      - 'helm2'
      - 'helm3'
    
    jobs:
    - deployment: deploy_${{ parameters.environment }}
      displayName: 'Deploy a MyPlace client.'
    #  environment: approvals-demo-core
      strategy:
        runOnce:
          preDeploy:
            steps:
              - template: ../tasks/task-chart-setup.yml
                parameters:
                  helm: ${{ parameters.helm }}
          deploy:
            steps:
            - template: ../tasks/task-chart-deploy.yml
              parameters:
                type: data
                namespace: ${{ parameters.clientBaseName }}-${{ parameters.environment }}
                charts: ./charts/data
                values: ./output/{{ parameters.environment }}/data.yaml
                aks: ${{ parameters.aks }}
    
            - template: ../tasks/task-chart-deploy.yml
              parameters:
                type: services
                namespace: ${{ parameters.clientBaseName }}-${{ parameters.environment }}
                charts: ./charts/services
                values: ./output/${{ parameters.environment }}/services.yaml
                aks: ${{ parameters.aks }}
    
            - template: ../tasks/task-chart-deploy.yml
              parameters:
                type: jobs
                namespace: ${{ parameters.clientBaseName }}-${{ parameters.environment }}
                charts: ./charts/jobs
                values: ./output/${{ parameters.environment }}/jobs.yaml
                aks: ${{ parameters.aks }}