Azure Pipelines设置变量时出现块映射解析错误求助
解决Azure DevOps流水线YAML解析错误:
While parsing a block mapping, did not find expected key 错误原因
问题并非缩进错误,而是YAML字符串嵌套单引号导致的解析失败。你的变量值使用单引号包裹,但内部表达式里的parameters['environmentCode']也用了单引号,YAML会将第一个内部单引号识别为整个字符串的结束标记,后续内容被判定为无效的YAML结构,最终触发解析错误,报错行号因解析中断出现偏差。
修复方案
有两种可行的修复方式:
方式1:改用双引号包裹变量值
将包含嵌套单引号的value外层改为双引号,内部单引号可正常使用:
jobs: - job: 'Deploy_Management_Resources' pool: vmImage: ${{ parameters.buildAgent }} variables: - name: managementResourceDNSPrivateResolverName value: "acme-$[ lower(parameters['environmentCode']) ]-$[ lower(variables['resourceLocationShort']) ]-private-dns-resolver" - name: managementResourceGroupManagement value: 'acme-infrastructure-rg-management' - name: managementResourceRouteTableName value: "acme-$[ lower(variables['subscriptionCode']) ]-$[ lower(variables['resourceLocationShort']) ]-route-table" - name: managementResourceVirtualNetworkName value: "acme-$[ lower(variables['subscriptionCode']) ]-$[ lower(variables['resourceLocationShort']) ]-vnet-internal-mng"
方式2:转义内部单引号
在YAML中,用两个连续单引号''表示一个实际的单引号,对内部表达式里的单引号进行转义:
jobs: - job: 'Deploy_Management_Resources' pool: vmImage: ${{ parameters.buildAgent }} variables: - name: managementResourceDNSPrivateResolverName value: 'acme-$[ lower(parameters[''environmentCode'']) ]-$[ lower(variables[''resourceLocationShort'']) ]-private-dns-resolver' - name: managementResourceGroupManagement value: 'acme-infrastructure-rg-management' - name: managementResourceRouteTableName value: 'acme-$[ lower(variables[''subscriptionCode'']) ]-$[ lower(variables[''resourceLocationShort'']) ]-route-table' - name: managementResourceVirtualNetworkName value: 'acme-$[ lower(variables[''subscriptionCode'']) ]-$[ lower(variables[''resourceLocationShort'']) ]-vnet-internal-mng'
内容的提问来源于stack exchange,提问作者johubb
相关产品推荐
相关产品推荐

