问题描述
我有一个试图运行多个作业的YAML管道,但是我遇到了第一个任务(GitVesion
命令行任务)的语法错误,我没有进入我拥有的其他只有一项工作的管道。
我得到的错误是:
(Line: 29,Col: 18,Idx: 576) - (Line: 29,Idx: 576): Mapping values are not allowed in this context.
第29行是第一个任务的displayName
(实际管道的文件顶部有注释,下面已将其删除)。
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
解决方法
我相信您的displayName
密钥应与task
密钥的第一个字符对齐:
- 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'
,
您有3个问题:
-
displayName
应该与task
对齐。 -
inputs
之后的键应位于inputs
的右侧,并且不对齐。 -
job
名称不能带空格。
我为您修复了它,这是正确的:
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