如何在YAML格式Azure Pipelines中指定AZ CLI使用版本
Windows-2019云代理中指定AZ CLI v2.34.1版本配置方法
windows-2019代理镜像默认预装AZ CLI v2.37.0,你可以在正式执行AZ CLI业务任务前,通过前置PowerShell步骤完成版本替换,具体操作如下:
- 前置准备:在流水线中所有需要调用AZ CLI的任务之前,新增一个PowerShell类型的任务,脚本运行模式选择内联模式,勾选「以最高权限运行」配置项,避免安装/卸载过程出现权限不足问题。
- 执行版本替换脚本,脚本内容如下:
# 卸载镜像预装的现有AZ CLI版本 $defaultCliPath = "${env:ProgramFiles(x86)}\Microsoft SDKs\Azure\CLI2" if (Test-Path $defaultCliPath) { Start-Process msiexec.exe -ArgumentList "/x `"$defaultCliPath\azure-cli.msi`" /qn" -Wait -NoNewWindow } # 下载指定v2.34.1版本安装包并静默安装 $cliInstallerPath = "$env:TEMP\azure-cli-2.34.1.msi" Invoke-WebRequest -Uri "https://azcliprod.blob.core.windows.net/msi/azure-cli-2.34.1.msi" -OutFile $cliInstallerPath Start-Process msiexec.exe -ArgumentList "/i `"$cliInstallerPath`" /qn" -Wait -NoNewWindow # 刷新系统环境变量,保证后续任务可以识别到新安装的AZ CLI $env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
- 增加版本校验(可选,避免版本安装失败导致业务任务异常):在安装脚本末尾追加以下校验逻辑,安装版本不符合要求时直接终止流水线:
$targetVersion = [version]"2.34.1" $currentVersion = [version](az version --query '"azure-cli"' -o tsv) if ($currentVersion -ne $targetVersion) { Write-Error "AZ CLI版本校验不通过,当前版本为$currentVersion,要求使用版本为$targetVersion" exit 1 }
配置注意事项
- 不要使用pip命令直接降级AZ CLI,windows-2019镜像预装的AZ CLI为MSI安装版,pip安装的版本无法被流水线内置的AZ CLI任务正确识别调用
- 所有AZ CLI扩展安装操作建议放在版本替换完成后执行,避免版本切换导致扩展兼容性问题
- 该版本替换操作仅对当前运行的云代理实例生效,不会影响后续其他流水线作业的代理环境
内容的提问来源于stack exchange,提问作者Elias Arellano
相关产品推荐
相关产品推荐

