如何将Azure Web App配置的环境变量传递至Azure Pipeline并构建镜像?
解决Azure Web App应用设置传递到Azure Pipeline的方法
Azure Web App的应用设置不会自动同步到Azure Pipeline中,你需要通过主动读取的方式将变量值获取到Pipeline里,具体步骤如下:
步骤1:添加Azure CLI任务读取Web App的应用设置
在Pipeline中加入以下Azure CLI任务,用于读取目标Web App的AAA_TEST变量值,并将其设置为Pipeline的环境变量:
- task: AzureCLI@2 displayName: '读取Web App应用设置' inputs: azureSubscription: '你的Azure服务连接名称' scriptType: 'pscore' scriptLocation: 'inlineScript' inlineScript: | # 获取Web App的所有应用设置 $appSettings = az webapp config appsettings list --name "你的Web App名称" --resource-group "你的资源组名称" | ConvertFrom-Json # 提取AAA_TEST的值 $aaaTestValue = ($appSettings | Where-Object { $_.name -eq "AAA_TEST" }).value # 将值设置为Pipeline变量,后续任务可直接引用 Write-Host "##vso[task.setvariable variable=AAA_TEST;]$aaaTestValue"
步骤2:在后续任务中使用该变量
设置完成后,你就可以在Pipeline的其他任务中直接引用$(AAA_TEST)变量了,比如在PowerShell任务中验证:
- task: PowerShell@2 displayName: '验证变量是否获取成功' inputs: targetType: 'inline' script: | Write-Host "AAA_TEST的值是: $(AAA_TEST)"
为什么你之前的方法无效?
你之前直接使用env: TEST: $(AAA_TEST)的方式无效,是因为$(AAA_TEST)在Pipeline中默认是引用Pipeline的预定义变量或手动设置的变量,而Web App的应用设置并不在这个范围内,必须通过Azure CLI/PowerShell主动读取并注入到Pipeline上下文里。
内容的提问来源于stack exchange,提问作者Márton Stark
相关产品推荐
相关产品推荐

