通过


AzureCLI@3 - Azure CLI v3 任务

在运行 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. stringconnectionType = azureRM时是必需的。

为部署指定一个 Azure 资源管理器 服务连接。


azureDevOpsServiceConnection - Azure DevOps 服务连接
stringconnectionType = azureDevOps时是必需的。

Specify a Azure DevOps service connection.


scriptType - 脚本类型
string。 必填。 允许的值:ps(PowerShell)、pscore(PowerShell Core)、batchbash(Shell)。

脚本的类型。 在 Linux 代理上运行时,请选择 bashpscore 脚本。 或者,在Windows代理上运行时,选择batchpspscore脚本。 pscore脚本可以在跨平台代理(Linux、macOS或Windows)上运行。


scriptLocation - 脚本位置
string。 必填。 允许的值:inlineScript(内联脚本)、scriptPath(脚本路径)。 默认值:scriptPath

脚本路径:文件路径或内联脚本。


scriptPath - 脚本路径
stringscriptLocation = scriptPath时是必需的。

脚本的完全限定路径。 使用基于Windows的代理时,使用.ps1.bat.cmd。 使用基于 Linux 的代理或相对于默认工作目录的路径时,请使用 .ps1.sh


inlineScript - 内联脚本
stringscriptLocation = 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

arguments - 脚本参数
输入别名scriptArguments. string

传递给脚本的参数。


powerShellErrorActionPreference - ErrorActionPreference
string。 可选。 当 scriptType = ps || scriptType = pscore时使用。 允许的值:stopcontinuesilentlyContinue。 默认值:stop

在你的 PowerShell/PowerShell 核心脚本顶部的那行 $ErrorActionPreference = 'VALUE' 前面加。


在脚本addSpnToEnvironment - 访问服务主体详细信息
boolean。 默认值:false

将你选择的Azure端点的服务主体ID、服务主键和租户ID添加到脚本的执行环境中。 你可以在脚本中使用变量: servicePrincipalIdservicePrincipalKey 并且 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的机器上运行,请重启代理以确保所有相关阶段变量均已更新。

要求

要求 说明
管道类型 YAML,经典版本,经典版本
运行在 代理,DeploymentGroup
需求 没有
功能 此任务不满足作业中后续任务的任何要求。
命令限制 任意
Settable 变量 任意
代理版本 2.0.0 或更高版本
任务类别 部署