如何在Azure DevOps YAML管道中配置与调用Service Connection
为Azure DevOps YAML管道指定并使用Service Connection
一、为特定YAML管道指定Service Connection
1. 内置Azure任务直接指定
对于Azure官方提供的任务(如AzureCLI、AzurePowerShell、AzureResourceGroupDeployment等),直接通过azureSubscription参数填入你的Service Connection名称即可,示例代码:
steps: - task: AzureCLI@2 inputs: azureSubscription: '你的Service Connection名称' scriptType: 'bash' scriptLocation: 'inlineScript' inlineScript: | az account show
2. 参数化选择(适用于模板场景)
如果需要在运行管道时手动选择Service Connection,可以将其定义为管道参数,让用户在触发时自主选择,示例:
parameters: - name: azureServiceConnection type: string default: '默认Service Connection名称' values: - 'Service Connection A' - 'Service Connection B' steps: - task: AzureCLI@2 inputs: azureSubscription: ${{ parameters.azureServiceConnection }} scriptType: 'bash' inlineScript: | az account show
二、使用Service Connection凭证配置CLI工具
1. 借助内置任务自动配置
AzureCLI和AzurePowerShell任务会自动基于指定的Service Connection完成Azure登录,无需手动配置凭证,直接在脚本中执行Azure命令即可,参考上面的示例。
2. 手动获取凭证配置(非内置任务场景)
如果需要在自定义脚本或第三方任务中使用Service Connection的凭证,可以通过内置变量或PowerShell获取会话信息,再配置CLI:
steps: - task: AzurePowerShell@5 inputs: azureSubscription: '你的Service Connection名称' ScriptType: 'InlineScript' Inline: | # 获取Azure上下文信息并导出为环境变量 $context = Get-AzContext Write-Host "##vso[task.setvariable variable=AZURE_TENANT_ID]$($context.Tenant.Id)" Write-Host "##vso[task.setvariable variable=AZURE_SUBSCRIPTION_ID]$($context.Subscription.Id)" azurePowerShellVersion: 'LatestVersion' - script: | # 用Service Connection内置变量配置Azure CLI az login --service-principal -u $(servicePrincipalId) -p $(servicePrincipalKey) --tenant $(AZURE_TENANT_ID) az account set --subscription $(AZURE_SUBSCRIPTION_ID) # 验证登录状态 az account show
注:
servicePrincipalId和servicePrincipalKey是Service Connection的内置变量,只有在指定了azureSubscription的任务上下文里才能直接引用。
附:官方文档相关内容翻译
- 创建新的服务连接后:
- 如果使用经典编辑器,在管道的“Azure订阅”设置中选择你指定的连接名称。
- 如果使用YAML,将连接名称复制到代码中作为
azureSubscription的值。
内容的提问来源于stack exchange,提问作者Neutrino
相关产品推荐
相关产品推荐

