情况
我的自托管 Windows 代理运行来自 Azure DevOps 的管道。到 在 Azure 中管理资源 我想使用 Azure CLI 任务。即使 Azure CLI 在之前的步骤中安装,AzureCLI 任务也会失败。
我有两个从我的管道运行的脚本。
2021-03-05T14:50:02.5986237Z ##[error]Azure CLI 2.x is not installed on this machine.
2021-03-05T14:50:02.6391547Z ##[error]Script failed with error: Error: Unable to locate executable file: 'az'. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.
After you install new software on an agent, you must restart the agent for the new capability to show up in the pool so that the build can run.
After the installation is complete, you will need to reopen PowerShell to use the Azure CLI.
AzureCLI 任务找不到已安装的 Azure CLI 可执行文件。如何解决此问题以便我可以运行 AzureCLI 任务?
我已经尝试过的
管道详情
trigger:
branches:
exclude:
- master
pool:
name: SelfHosted-AgentPool
vmImage: 'windows-latest'
variables:
environment.name: 'Test'
stages:
- stage: build_and_deploy
jobs:
- deployment: VMBackup_Testing
displayName: "Enable Backup Protection"
environment: '$(environment.name)'
strategy:
runOnce:
deploy:
steps:
- checkout: self
- task: PowerShell@2
inputs:
filePath: '$(System.DefaultWorkingDirectory)/Templates/Snippets/InstallAzureCLI.ps1'
- task: AzureCLI@2
inputs:
workingDirectory: 'C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\wbin'
azureSubscription: 'XXX'
scriptType: 'ps'
scriptLocation: 'scriptPath'
scriptPath: '$(System.DefaultWorkingDirectory)/Templates/Snippets/EnableBackupProtection.ps1'
安装 Azure CLI 脚本
# Download and Install Azure CLI
Invoke-WebRequest -Uri https://azcliprod.blob.core.windows.net/msi/azure-cli-2.19.1.msi -OutFile .\AzureCLI.msi; Start-Process msiexec.exe -Wait -ArgumentList "/I AzureCLI.msi /quiet"; rm .\AzureCLI.msi
# Update PATH for Powershell to use new installed software
setx /M PATH "$env:Path += ;C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\wbin"
# Test if PATH of Azure CLI exists
Test-Path -Path "C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\wbin"
# Reload Shell with new PATH
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
# Check if AZ CLI is installed
az version
Azure CLI 命令脚本
# Check if script gets executed
Write-Host "Hello, World!"
# AZ CLI commands to enable Backup Protection
az backup protection enable-for-vm `
--resource-group XXX`
--vault-name XXXX`
--vm $(az vm show -g XXX -n XXX --query id) `
--policy-name DailyBackup
答案 0 :(得分:0)
为什么每次在同一个自托管 Windows 代理上运行管道时都需要安装 Azure CLI?
与 Microsoft-hosted agents 不同的是,您只需在自托管的代理机器上手动安装所需的工具,然后您就可以在代理上运行的管道中使用它们。
登录到安装了自托管代理的 Windows 计算机(本地或虚拟机)。
打开 Web 浏览器,从 here 下载最新发布的 Azure CLI 的 MSI 安装程序。
通过 MSI 安装程序安装 Azure CLI 时,通常安装向导会自动将此工具添加到系统环境变量 PATH。安装完成后,您可以在机器上打开“编辑系统环境变量”进行检查。如果没有添加到系统环境变量PATH中,可以手动添加。
通过这种方式,当您设置管道在此自托管代理上运行时,您可以直接调用 Azure CLI,无需在管道中安装 Azure CLI。