下面是Azure DevOps中YAML管道的摘录:
- task: AzureCLI@2
name: GetAppInsightsConnString
displayName: 'Get AppInsights ConnectionString'
inputs:
azureSubscription: ${{ parameters.TelemetryAzureSubscription }}
scriptType: 'pscore'
scriptLocation: 'inlineScript'
inlineScript: |
az extension add -n application-insights
az feature register --name AIWorkspacePreview --namespace microsoft.insights
$resourceInfo = az monitor app-insights component show --app ${{ parameters.AppInsightsResourceName }} --resource-group ${{ parameters.AppInsightsResourceGroupName }}
$instrumentationKey = ($resourceInfo | ConvertFrom-Json).InstrumentationKey
echo "##vso[task.setvariable variable=ApplicationInsightsInstrumentationKey]$instrumentationKey"
- task: FileTransform@2
displayName: "Replace Parameters From Variables"
inputs:
folderPath: '$(Pipeline.Workspace)'
xmlTransformationRules: ''
jsonTargetFiles: '**/${{ parameters.ArmTemplateParameters }}'
- powershell: 'Get-Content $(Pipeline.Workspace)/${{ parameters.ArtifactName }}-provisioning/${{ parameters.ArmTemplateParameters }}'
displayName: 'Preview Arm Template Parameters File'
- task: PowerShell@2
displayName: "TEMP: Test new variable values"
inputs:
targetType: 'inline'
script: |
Write-Host "ApplicationInsightsInstrumentationKey: $(ApplicationInsightsInstrumentationKey)"
- task: AzureResourceManagerTemplateDeployment@3
inputs:
deploymentScope: 'Resource Group'
ConnectedServiceName: ${{ parameters.AzureSubscription }}
action: 'Create Or Update Resource Group'
resourceGroupName: ${{ parameters.ResourceGroupName }}
location: $(locationLong)
templateLocation: 'Linked artifact'
csmFile: '$(Pipeline.Workspace)/${{ parameters.ArtifactName }}-provisioning/${{ parameters.ArmTemplate }}'
csmParametersFile: '$(Pipeline.Workspace)/${{ parameters.ArtifactName }}-provisioning/${{ parameters.ArmTemplateParameters }}'
overrideParameters: '–applicationInsightsInstrumentationKey "$(ApplicationInsightsInstrumentationKey)"'
deploymentMode: 'Incremental'这是连接到App实例,获取检测键,然后在预览和部署ARM参数文件之前对其执行变量替换。
检测键写到一个ApplicationInsightsInstrumentationKey管道变量,您可以看到一个稍后的任务,它在管道日志中预览这一点,这样我就可以确认变量是按预期设置的。
在最后一个任务中,我使用一个overrideParameters选项将这个键作为applicationInsightsInstrumentationKey参数的值输入到部署中。这是管道失败的地方,并有错误:
部署参数的##errorOne有一个空键。详情请见https://aka.ms/resource-manager-parameter-files。
我的网络搜索告诉我,当值有空格且不包含双引号时,可能会发生这种情况,但这里没有这两种情况。事实上,我甚至可以用硬编码的值替换这一行,我仍然得到同样的问题。
如果删除该overrideParameters行,部署就会成功,但显然不包括我想要的参数。
有人知道怎么解决这个问题吗?
发布于 2021-03-16 10:23:52
如ARM模板部署上的帮助对话框所示,ADO任务

由于applicationInsightsInstrumentationKey不会有多个单词,请尝试更改行,如下所示:
overrideParameters: '–applicationInsightsInstrumentationKey $(ApplicationInsightsInstrumentationKey)'https://stackoverflow.com/questions/66652919
复制相似问题