Azure DevOps YAML 管道错误:解析块映射时未找到预期的密钥

Posted

技术标签:

【中文标题】Azure DevOps YAML 管道错误:解析块映射时未找到预期的密钥【英文标题】:Azure DevOps YAML Pipeline Error: While parsing a block mapping did not find expected key 【发布时间】:2022-01-12 10:36:28 【问题描述】:

我刚刚使用 YAML 文件创建了一个管道,但我总是收到错误“/_Azure-Pipelines/templates/webpart.yml: (Line: 41, Col: 27, Idx: 1058) - (Line: 41, Col: 60, Idx: 1091): 解析块映射时,没有找到预期的键。”。我已经验证了我的 YAML 文件的缩进,看起来不错。

下面是我的 YAML 文件。

parameters:
  - name: azureSubscription
    type: string
  - name: cdnStorageAccount
    type: string
  - name: cdnResourceGroupName
    type: string
  - name: cdnEndpointName
    type: string
  - name: cdnProfileName
    type: string
  - name: sourceBranchTrigger
    type: string

stages:
  - stage: build_stage
    displayName: "Build"
    jobs:
      - job: build_job
        steps:
          - task: UseNode@1
            displayName: "Use Node 8.x"
            inputs:
              version: "8.x"

          - task: CmdLine@2
            displayName: "Build"
            inputs:
              script: |
                cd ./Webparts
                npm run build-server

          - task: PublishBuildArtifacts@1
            displayName: "Publish Build Artifact (Apps)"
            condition: ne(variables['Build.Reason'], 'PullRequest')
            inputs:
              PathtoPublish: "Webparts/sharepoint/solution/webpart.sppkg
              ArtifactName: Apps

          - task: PublishBuildArtifacts@1
            displayName: "Publish Build Artifact (Scripts)"
            condition: ne(variables['Build.Reason'], 'PullRequest')
            inputs:
              PathtoPublish: "Webparts/temp/deploy"
              ArtifactName: Scripts

【问题讨论】:

【参考方案1】:

这是由于PathtoPublish 的任务PublishBuildArtifacts@1 中缺少引号。我通过使用RedHat 提供的YAML 扩展发现了这个错误。

启用该扩展并设置 YAML 格式后(SHIFT + ALT + F),它应该会显示 YAML 文件中的错误。

【讨论】:

这是一个非常有用的扩展,我们团队中的每个人都在使用它

以上是关于Azure DevOps YAML 管道错误:解析块映射时未找到预期的密钥的主要内容,如果未能解决你的问题,请参考以下文章

Azure DevOps、YAML 发布管道? [关闭]

是否有在本地验证 Azure DevOps Pipeline 的工具?

azure devops yaml管道未设置变量

Azure DevOps 中的多个 YAML 构建管道

用于在 azure devops.Apache maven 上创建基于 java 的 Web 应用程序的管道以创建 build 。下面的yaml代码和我得到的输出错误

Azure DevOps - 使用参数在 yaml 管道定义中设置路径触发器