在运行 Linux agent 时,用 PowerShell Core/Shell 脚本对 Azure 订阅运行 Azure CLI 命令,在 Windows agent 上运行 PowerShell/PowerShell Core/Batch 脚本。
注释
该任务作为访问Azure DevOps的一部分发布,Microsoft Entra工作负载身份功能,并将在本周和下周推广。 如果你还没在 Azure DevOps Services 项目中看到这个功能,几天后再来看看。
Syntax
# Azure CLI v3
# Run Azure CLI commands against an Azure subscription in a PowerShell Core/Shell script when running on Linux agent or PowerShell/PowerShell Core/Batch script when running on Windows agent.
- task: AzureCLI@3
inputs:
connectionType: 'azureRM' # 'azureRM' | 'azureDevOps'. Required. Connection Type. Default: azureRM.
azureSubscription: # string. Alias: connectedServiceNameARM. Required when connectionType = azureRM. Azure Resource Manager connection.
#azureDevOpsServiceConnection: # string. Required when connectionType = azureDevOps. Azure DevOps Service Connection.
scriptType: # 'ps' | 'pscore' | 'batch' | 'bash'. Required. Script Type.
scriptLocation: 'scriptPath' # 'inlineScript' | 'scriptPath'. Required. Script Location. Default: scriptPath.
scriptPath: # string. Required when scriptLocation = scriptPath. Script Path.
#inlineScript: # string. Required when scriptLocation = inlineScript. Inline Script.
#arguments: # string. Alias: scriptArguments. Script Arguments.
#powerShellErrorActionPreference: 'stop' # 'stop' | 'continue' | 'silentlyContinue'. Optional. Use when scriptType = ps || scriptType = pscore. ErrorActionPreference. Default: stop.
# Advanced
#addSpnToEnvironment: false # boolean. Access service principal details in script. Default: false.
#useGlobalConfig: false # boolean. Use global Azure CLI configuration. Default: false.
#workingDirectory: # string. Alias: cwd. Working Directory.
#failOnStandardError: false # boolean. Fail on Standard Error. Default: false.
#powerShellIgnoreLASTEXITCODE: false # boolean. Optional. Use when scriptType = ps || scriptType = pscore. Ignore $LASTEXITCODE. Default: false.
#visibleAzLogin: true # boolean. az login output visibility. Default: true.
#allowNoSubscriptions: false # boolean. Allow no Azure subscriptions. Default: false.
#keepAzSessionActive: false # boolean. [Experimental] Keep Azure CLI session active. Default: false.
输入
connectionType
-
连接类型
string。 必填。 允许的值:azureRM (Azure 资源管理器)、azureDevOps (Azure DevOps)。 默认值:azureRM。
服务连接的类型。
azureSubscription
-
Azure 资源管理器 连接
输入别名: connectedServiceNameARM.
string。
connectionType = azureRM时是必需的。
为部署指定一个 Azure 资源管理器 服务连接。
azureDevOpsServiceConnection
-
Azure DevOps 服务连接
string。
connectionType = azureDevOps时是必需的。
Specify a Azure DevOps service connection.
scriptType
-
脚本类型
string。 必填。 允许的值:ps(PowerShell)、pscore(PowerShell Core)、batch、bash(Shell)。
脚本的类型。 在 Linux 代理上运行时,请选择 bash 或 pscore 脚本。 或者,在Windows代理上运行时,选择batch、ps 或 pscore脚本。
pscore脚本可以在跨平台代理(Linux、macOS或Windows)上运行。
scriptLocation
-
脚本位置
string。 必填。 允许的值:inlineScript(内联脚本)、scriptPath(脚本路径)。 默认值:scriptPath。
脚本路径:文件路径或内联脚本。
scriptPath
-
脚本路径
string。
scriptLocation = scriptPath时是必需的。
脚本的完全限定路径。 使用基于Windows的代理时,使用.ps1、.bat或.cmd。 使用基于 Linux 的代理或相对于默认工作目录的路径时,请使用 .ps1 或 .sh。
inlineScript
-
内联脚本
string。
scriptLocation = inlineScript时是必需的。
可以在此处内联编写脚本。 使用Windows代理时,可以使用PowerShell、PowerShell Core或批处理脚本。 使用基于 Linux 的代理时,请使用 PowerShell Core 或 shell 脚本。 对于批处理文件,在每个Azure命令前使用前缀 call。 还可以使用参数将预定义变量和自定义变量传递给此脚本。
下面是 PowerShell/PowerShellCore/shell 的示例。
az --version
az account show
下面是批处理的示例。
call az --version
call az account show
powerShellErrorActionPreference
-
ErrorActionPreference
string。 可选。 当 scriptType = ps || scriptType = pscore时使用。 允许的值:stop、continue、silentlyContinue。 默认值:stop。
在你的 PowerShell/PowerShell 核心脚本顶部的那行 $ErrorActionPreference = 'VALUE' 前面加。
在脚本中 addSpnToEnvironment - 访问服务主体详细信息
boolean。 默认值:false。
将你选择的Azure端点的服务主体ID、服务主键和租户ID添加到脚本的执行环境中。 你可以在脚本中使用变量: servicePrincipalId, servicePrincipalKey 并且 tenantId 在脚本中。
只有当 Azure 端点采用服务主体认证方案时,才会被使用。
基于脚本类型访问环境变量的语法。
Powershell script: $env:servicePrincipalId
批处理脚本:%servicePrincipalId%
壳体脚本:$servicePrincipalId。
useGlobalConfig
-
使用全局Azure CLI配置
boolean。 默认值:false。
如果该输入为假,该任务将使用独立的 Azure CLI配置目录。 这可以用来运行Azure CLI任务,并行发布。
workingDirectory
-
工作目录
输入别名: cwd.
string。
指定脚本运行的工作目录。 如果留空,默认是仓库(构建)或工件(发布)的根节点,即 []$(System.DefaultWorkingDirectory)](/azure/devops/pipelines/build/variables#system-variables)。
标准错误failOnStandardError - 失败
boolean。 默认值:false。
如果成立,当写入 StandardError 流时,该任务将失败。 取消选中复选框以忽略标准错误,并借助退出代码来确定状态。
powerShellIgnoreLASTEXITCODE
-
忽略$LASTEXITCODE
boolean。 可选。 当 scriptType = ps || scriptType = pscore时使用。 默认值:false。
如果这是假的,该台词 if ((Test-Path -LiteralPath variable:\LASTEXITCODE)) { exit $LASTEXITCODE } 会附加在你的剧本末尾。 这会导致外部命令的最后一个退出代码被传播为 PowerShell 的退出代码。 否则这句话不会附加在剧本末尾。
visibleAzLogin
-
az login 输出可见性
boolean。 默认值:true。
如果设置为 true,az login 命令将输出到任务。 将其设置为 false 将禁止 az login output。
allowNoSubscriptions
-
不允许Azure订阅
boolean。 默认值:false。
如果成立,任务不会尝试设置订阅上下文,并且允许身份登录时没有订阅权限。 你也可以在服务连接中提供全零的订阅ID(0000000-0000-0000-00000-000000000000000),从而隐式跳过设置订阅上下文。
keepAzSessionActive
-
[实验性] 保持Azure CLI会话活跃
boolean。 默认值:false。
启用后,该任务将持续登录Azure以避免在 IdToken 过期后请求访问令牌时出现AADSTS700024错误。 请注意,这个功能是实验性的,可能不适用于所有场景,而且你使用时没有任何保证。 仅适用于使用工作负载身份联合认证方案的服务连接。
任务控制选项
除任务输入之外,所有任务都具有控制选项。 有关详细信息,请参阅 控件选项和常见任务属性。
输出变量
没有。
注解
版本任务3.0版本的新内容
- 支持雙重連接類型:Azure 资源管理器 和 Azure DevOps 服務連接。
- Azure DevOps CLI 集成与自动扩展安装与配置。
- Workload Identity Federation support for Azure DevOps connections.
- 新增了“允许无 Azure 订阅”选项,支持无订阅访问的身份。
先决条件
- 一个Microsoft Azure订阅。
- Azure 资源管理器 服务连接到你的Azure账户。
- Microsoft托管代理预装了Azure CLI。 但如果你使用私有代理,可以在运行构建和发布代理的电脑上安装安装Azure CLI。 如果代理已经在安装Azure CLI的机器上运行,请重启代理以确保所有相关阶段变量均已更新。