2
votes

I've got a YAML pipeline that is attempting to run multiple jobs, but I'm getting a syntax error for the first task (the GitVesion command-line task), which I don't get in other pipelines that I've that have a single job.

The error I get is:

(Line: 29, Col: 18, Idx: 576) - (Line: 29, Col: 18, Idx: 576): Mapping values are not allowed in this context.

Line 29 is the displayName of the first task (actual pipeline has comments at top of the file that have been removed below).

trigger:
- master

pool:
  name: NameRedacted
  demands: VisualStudio_15.0

variables:
- name: CreateRelease
  value: true
- name: PublishPackages
  value: true
- name: PublishMyGetPackages
  value: true
- name: IntegrationTests_SqlAlias
  value: .
- group: 'Common Variables'

jobs:

- job: Backend
  steps:
  - task: CmdLine@1
      displayName: GitVersion
      inputs:
      filename: '$(GitVersionPath)'
      arguments: '$(GitVersionArguments)'

  - task: DeleteFiles@1
      displayName: 'Delete files from $(Build.ArtifactStagingDirectory)'
      inputs:
      SourceFolder: '$(Build.ArtifactStagingDirectory)'
      Contents: '**/*.nupkg'

  - task: DeleteFiles@1
      displayName: 'Delete files from $(Build.Repository.LocalPath)'
      inputs:
      SourceFolder: '$(Build.Repository.LocalPath)'
      Contents: |
          **/*.nupkg
          Packages/*.zip

  - task: DeleteFiles@1
      displayName: 'Delete old test files'
      inputs:
      SourceFolder: '$(System.DefaultWorkingDirectory)'
      Contents: '**\*test*.dll'

  - task: UseDotNet@2
      displayName: 'Use .Net Core SDK 2.2.104'
      inputs:
      packageType: sdk
      version: 2.2.104
      installationPath: $(Agent.ToolsDirectory)/dotnet

  - task: DotNetCoreCLI@2
      displayName: Restore
      inputs:
      command: restore
      projects: NameRedacted.sln
      restoreArguments: '$(DotNetRestoreSourcesLight)'

  - task: DotNetCoreCLI@2
      displayName: Build
      inputs:
      command: build
      projects: NameRedacted.sln
      arguments: '-c Release --no-restore'

  - task: DotNetCoreCLI@2
      displayName: Test
      inputs:
      command: 'test'
      projects: |
          **/*tests*/*.csproj
          !**\*Tests.Common.csproj
          !**\*Tests.Common.dll
          !**\*TestAdapter.dll
          !**\obj\**
          !**\netstandard2.0\*.dll
          !**\node_modules\**
      arguments: '-c Release'

  - task: DotNetCoreCLI@2
      displayName: Publish
      inputs:
        command: publish
        arguments: '-c $(BuildConfiguration) -o $(Build.ArtifactStagingDirectory) --no-restore'
        zipAfterPublish: false

  # Octopus packaging and pushing redacted

- job: 'Angular App'
  steps:
  - task: DeleteFiles@1
    displayName: 'Delete files from $(Build.ArtifactStagingDirectory)'
    inputs:
      SourceFolder: '$(Build.ArtifactStagingDirectory)'
      Contents: '**/*.nupkg'

  - task: DeleteFiles@1
    displayName: 'Delete tests '
    inputs:
      SourceFolder: '$(Parameters.SourceFolder)'
      Contents: '**/TESTS-*.xml'

  - task: DeleteFiles@1
    displayName: 'Delete files from dist'
    inputs:
      SourceFolder: '$(Parameters.SourceFolder)'
      Contents: dist

  - task: CmdLine@1
    displayName: 'Run $(GitVersionPath)'
    inputs:
      filename: '$(GitVersionPath)'
      arguments: '$(GitVersionArguments)'

  - task: NodeTool@0
    displayName: 'Use Node 10.x'
    inputs:
      versionSpec: 10.x

  - task: Npm@1
    displayName: 'npm install windows-build-tools'
    inputs:
      command: custom
      verbose: false
      customCommand: 'install --global --production windows-build-tools'

  - task: Npm@1
    displayName: 'npm install node-sass'
    inputs:
      command: custom
      verbose: false
      customCommand: 'install --global  --unsafe-perms node-sass'

  - task: Npm@1
    displayName: Restore
    inputs:
      workingDir: '$(Parameters.SourceFolder)'
      verbose: false

  - task: Npm@1
    displayName: Build
    inputs:
      command: custom
      workingDir: '$(Parameters.SourceFolder)'
      verbose: false
      customCommand: 'run ui-prod'

  - task: Npm@1
    displayName: Test
    inputs:
      command: custom
      workingDir: '$(Parameters.SourceFolder)'
      verbose: false
      customCommand: 'test --watch=false --single-run=true --reporters=junit,progress --browsers=PhantomJS'
    enabled: false

  - task: PublishTestResults@2
    displayName: 'Publish Test Results **/TESTS-*.xml'
    inputs:
      testResultsFiles: '**/TESTS-*.xml'
    enabled: false
    condition: succeededOrFailed()

  - task: Npm@1
    displayName: Lint
    inputs:
      command: custom
      workingDir: '$(Parameters.SourceFolder)'
      verbose: false
      customCommand: 'run lint'
    enabled: false

# Octopus packaging and pushing redacted

- job: 'Ionic App'
  steps:
  - task: DeleteFiles@1
    displayName: 'Delete files from $(Build.ArtifactStagingDirectory)'
    inputs:
      SourceFolder: '$(Build.ArtifactStagingDirectory)'
      Contents: '**/*.nupkg'

  - task: DeleteFiles@1
    displayName: 'Delete tests'
    inputs:
      SourceFolder: '$(Parameters.SourceFolder)'
      Contents: '**/TESTS-*.xml'

  - task: DeleteFiles@1
    displayName: 'Delete files from dist'
    inputs:
      SourceFolder: 'src/ionic-app'
      Contents: www

  - task: CmdLine@1
    displayName: 'Run $(GitVersionPath)'
    inputs:
      filename: '$(GitVersionPath)'
      arguments: '$(GitVersionArguments)'

  - task: NodeTool@0
    displayName: 'Use Node 10.x'
    inputs:
      versionSpec: 10.x

  - task: Npm@1
    displayName: 'npm install windows-build-tools'
    inputs:
      command: custom
      verbose: false
      customCommand: 'install --global --production windows-build-tools'

  - task: Npm@1
    displayName: 'npm install node-sass'
    inputs:
      command: custom
      verbose: false
      customCommand: 'install --global  --unsafe-perms node-sass'

  - task: Npm@1
    displayName: 'npm install ionic'
    inputs:
      command: custom
      verbose: false
      customCommand: 'install --global  ionic'

  - task: Npm@1
    displayName: Restore
    inputs:
      workingDir: 'src/ionic-app'
      verbose: false

  - task: Npm@1
    displayName: Build
    inputs:
      command: custom
      workingDir: 'src/ionic-app'
      verbose: false
      customCommand: 'run build-web-prod'

  # Octopus packaging and pushing redacted

- job: Release
  dependsOn:
    - Backedn
    - 'Angular App'
    - 'Ionic App'
  steps:
  - task: CmdLine@1
    displayName: 'Run $(GitVersionPath)'
    inputs:
      filename: '$(GitVersionPath)'
      arguments: '$(GitVersionArguments)'
    condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master'), eq(variables['CreateRelease'],'true'), ne(variables['Build.Reason'], 'Schedule'))

  # Octopus release creating redacted

2

2 Answers

2
votes

You have 3 issues:

  1. The displayName should be aligned with the task.
  2. The keys after the inputs should be in right to inputs and not aligned.
  3. The job names couldn't be with spaces.

I fixed it for you, this is correct:

trigger:
- master

pool:
  name: NameRedacted
  demands: VisualStudio_15.0

variables:
- name: CreateRelease
  value: true
- name: PublishPackages
  value: true
- name: PublishMyGetPackages
  value: true
- name: IntegrationTests_SqlAlias
  value: .
- group: 'Common Variables'

jobs:

- job: Backend
  steps:
  - task: CmdLine@1
    displayName: GitVersion
    inputs:
      filename: '$(GitVersionPath)'
      arguments: '$(GitVersionArguments)'

  - task: DeleteFiles@1
    displayName: 'Delete files from $(Build.ArtifactStagingDirectory)'
    inputs:
      SourceFolder: '$(Build.ArtifactStagingDirectory)'
      Contents: '**/Naus*.nupkg'

  - task: DeleteFiles@1
    displayName: 'Delete files from $(Build.Repository.LocalPath)'
    inputs:
      SourceFolder: '$(Build.Repository.LocalPath)'
      Contents: |
          **/*.nupkg
          Packages/*.zip

  - task: DeleteFiles@1
    displayName: 'Delete old test files'
    inputs:
      SourceFolder: '$(System.DefaultWorkingDirectory)'
      Contents: '**\*test*.dll'

  - task: UseDotNet@2
    displayName: 'Use .Net Core SDK 2.2.104'
    inputs:
      packageType: sdk
      version: 2.2.104
      installationPath: $(Agent.ToolsDirectory)/dotnet

  - task: DotNetCoreCLI@2
    displayName: Restore
    inputs:
      command: restore
      projects: NameRedacted.sln
      restoreArguments: '$(DotNetRestoreSourcesLight)'

  - task: DotNetCoreCLI@2
    displayName: Build
    inputs:
      command: build
      projects: NameRedacted.sln
      arguments: '-c Release --no-restore'

  - task: DotNetCoreCLI@2
    displayName: Test
    inputs:
      command: 'test'
      projects: |
          **/*tests*/*.csproj
          !**\*Tests.Common.csproj
          !**\*Tests.Common.dll
          !**\*TestAdapter.dll
          !**\obj\**
          !**\netstandard2.0\*.dll
          !**\node_modules\**
      arguments: '-c Release'

  - task: DotNetCoreCLI@2
    displayName: Publish
    inputs:
      command: publish
      arguments: '-c $(BuildConfiguration) -o $(Build.ArtifactStagingDirectory) --no-restore'
      zipAfterPublish: false

  # Octopus packaging and pushing redacted

- job: AngularApp
  steps:
  - task: DeleteFiles@1
    displayName: 'Delete files from $(Build.ArtifactStagingDirectory)'
    inputs:
      SourceFolder: '$(Build.ArtifactStagingDirectory)'
      Contents: '**/*.nupkg'

  - task: DeleteFiles@1
    displayName: 'Delete tests '
    inputs:
      SourceFolder: '$(Parameters.SourceFolder)'
      Contents: '**/TESTS-*.xml'

  - task: DeleteFiles@1
    displayName: 'Delete files from dist'
    inputs:
      SourceFolder: '$(Parameters.SourceFolder)'
      Contents: dist

  - task: CmdLine@1
    displayName: 'Run $(GitVersionPath)'
    inputs:
      filename: '$(GitVersionPath)'
      arguments: '$(GitVersionArguments)'

  - task: NodeTool@0
    displayName: 'Use Node 10.x'
    inputs:
      versionSpec: 10.x

  - task: Npm@1
    displayName: 'npm install windows-build-tools'
    inputs:
      command: custom
      verbose: false
      customCommand: 'install --global --production windows-build-tools'

  - task: Npm@1
    displayName: 'npm install node-sass'
    inputs:
      command: custom
      verbose: false
      customCommand: 'install --global  --unsafe-perms node-sass'

  - task: Npm@1
    displayName: Restore
    inputs:
      workingDir: '$(Parameters.SourceFolder)'
      verbose: false

  - task: Npm@1
    displayName: Build
    inputs:
      command: custom
      workingDir: '$(Parameters.SourceFolder)'
      verbose: false
      customCommand: 'run ui-prod'

  - task: Npm@1
    displayName: Test
    inputs:
      command: custom
      workingDir: '$(Parameters.SourceFolder)'
      verbose: false
      customCommand: 'test --watch=false --single-run=true --reporters=junit,progress --browsers=PhantomJS'
    enabled: false

  - task: PublishTestResults@2
    displayName: 'Publish Test Results **/TESTS-*.xml'
    inputs:
      testResultsFiles: '**/TESTS-*.xml'
    enabled: false
    condition: succeededOrFailed()

  - task: Npm@1
    displayName: Lint
    inputs:
      command: custom
      workingDir: '$(Parameters.SourceFolder)'
      verbose: false
      customCommand: 'run lint'
    enabled: false

# Octopus packaging and pushing redacted

- job: IonicApp
  steps:
  - task: DeleteFiles@1
    displayName: 'Delete files from $(Build.ArtifactStagingDirectory)'
    inputs:
      SourceFolder: '$(Build.ArtifactStagingDirectory)'
      Contents: '**/Naus*.nupkg'

  - task: DeleteFiles@1
    displayName: 'Delete tests'
    inputs:
      SourceFolder: '$(Parameters.SourceFolder)'
      Contents: '**/TESTS-*.xml'

  - task: DeleteFiles@1
    displayName: 'Delete files from dist'
    inputs:
      SourceFolder: 'src/ionic-app'
      Contents: www

  - task: CmdLine@1
    displayName: 'Run $(GitVersionPath)'
    inputs:
      filename: '$(GitVersionPath)'
      arguments: '$(GitVersionArguments)'

  - task: NodeTool@0
    displayName: 'Use Node 10.x'
    inputs:
      versionSpec: 10.x

  - task: Npm@1
    displayName: 'npm install windows-build-tools'
    inputs:
      command: custom
      verbose: false
      customCommand: 'install --global --production windows-build-tools'

  - task: Npm@1
    displayName: 'npm install node-sass'
    inputs:
      command: custom
      verbose: false
      customCommand: 'install --global  --unsafe-perms node-sass'

  - task: Npm@1
    displayName: 'npm install ionic'
    inputs:
      command: custom
      verbose: false
      customCommand: 'install --global  ionic'

  - task: Npm@1
    displayName: Restore
    inputs:
      workingDir: 'src/naus-residents-app'
      verbose: false

  - task: Npm@1
    displayName: Build
    inputs:
      command: custom
      workingDir: 'src/naus-residents-app'
      verbose: false
      customCommand: 'run build-web-prod'

  # Octopus packaging and pushing redacted

- job: Release
  dependsOn:
    - Backedn
    - 'Angular App'
    - 'Ionic App'
  steps:
  - task: CmdLine@1
    displayName: 'Run $(GitVersionPath)'
    inputs:
      filename: '$(GitVersionPath)'
      arguments: '$(GitVersionArguments)'
    condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master'), eq(variables['CreateRelease'],'true'), ne(variables['Build.Reason'], 'Schedule'))

  # Octopus release creating redacted
2
votes

I believe your displayName key(s) should be aligned with the first character of your task key(s) ala:


- job: Backend
  steps:
  - task: CmdLine@1
    displayName: GitVersion
    inputs:
    filename: '$(GitVersionPath)'
    arguments: '$(GitVersionArguments)'

  - task: DeleteFiles@1
    displayName: 'Delete files from $(Build.ArtifactStagingDirectory)'
    inputs:
    SourceFolder: '$(Build.ArtifactStagingDirectory)'
    Contents: '**/Naus*.nupkg'