AzureCLI@3 - Azure CLI v3 任務

在 Linux agent 上執行 PowerShell Core/Shell 腳本,或在 Windows agent 上執行 PowerShell/PowerShell Core/Batch 腳本,對 Azure 訂閱執行 Azure CLI 指令。

備註

此任務作為 Access Azure DevOps Microsoft Entra 工作負載身份功能的一部分釋出,並將於本週及下週陸續推出。 如果你還沒在 Azure DevOps Services 專案看到這個功能,幾天後再回來看看。

語法

# 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 Resource Manager)、azureDevOps (Azure DevOps)。 預設值: azureRM

服務連結的類型。


azureSubscription - Azure Resource Manager connection
輸入別名connectedServiceNameARMstringconnectionType = azureRM時為必要項。

請指定部署所需的 Azure Resource Manager 服務連線。


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或殼層腳本。 批次檔的話,每個 Azure 指令前都用前綴 call。 您也可以使用自變數,將預先定義的和自定義變數傳遞至此腳本。

以下是 PowerShell/PowerShellCore/shell 的範例。

az --version 
az account show 

以下是批次的範例。

call  az --version 
call az account show

arguments - 腳本自變數
輸入別名scriptArgumentsstring

傳遞至腳本的自變數。


powerShellErrorActionPreference - ErrorActionPreference
string。 選擇性。 scriptType = ps || scriptType = pscore時使用 。 允許值:stopcontinuesilentlyContinue。 預設值: stop

放在你 PowerShell/PowerShell 核心腳本頂端的那行 $ErrorActionPreference = 'VALUE' 前面。


在腳本addSpnToEnvironment - Access 服務主體詳細數據
boolean。 預設值: false

將你選擇的 Azure 端點的服務主體 id、服務主鍵和租戶 id 加入腳本的執行環境。 你可以在腳本中使用變數: servicePrincipalIdservicePrincipalKey 以及 tenantId

只有當 Azure 端點採用服務主體認證方案時,才會被遵守。

根據腳本類型存取環境變數的語法。

Powershell script: $env:servicePrincipalId

批次腳本:%servicePrincipalId%

殼體:$servicePrincipalId。


useGlobalConfig - 使用全域Azure CLI配置
boolean。 預設值: false

若此輸入為假,該任務將使用獨立的 Azure CLI 配置目錄。 這可用於執行Azure CLI任務,parallel 版本。


workingDirectory - 工作目錄
輸入別名cwdstring

指定執行腳本的工作目錄。 若留空,預設為倉庫(建置)或工件(release)的根節點,為 []$(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 輸出。


allowNoSubscriptions - 不允許Azure訂閱
boolean。 預設值: false

若屬實,該任務不會嘗試設定訂閱上下文,且允許身份登入時無法存取任何訂閱。 你也可以在服務連線中提供全零訂閱ID(0000000-0000-0000-00000-00000000000000),這樣就隱含地跳過設定訂閱上下文。


keepAzSessionActive - [實驗性] 保持Azure CLI會話活躍
boolean。 預設值: false

啟用後,此任務會持續登入 Azure,以避免在 IdToken 到期日後申請存取權杖時發生AADSTS700024錯誤。 請注意,這個功能還只是實驗性質,可能不一定適用於所有情境,而且你使用時沒有任何保證。 僅適用於使用 Workload Identity Federation 認證方案的服務連線。


工作控制選項

除了工作輸入之外,所有工作都有控制選項。 如需詳細資訊,請參閱 控制項選項和一般工作屬性

輸出變數

沒有。

備註

版本任務 3.0 版本的新內容

  • 支援雙重連接類型:Azure Resource Manager 同 Azure DevOps service connections.
  • Azure DevOps CLI 整合,具備自動擴充安裝與配置。
  • Workload Identity Federation support for Azure DevOps connections.
  • 新增了「允許無 Azure 訂閱」選項,以支援沒有訂閱權限的身份。

先決條件

  • 一個 Microsoft Azure 訂閱。
  • Azure Resource Manager 服務連結 到你的Azure帳戶。
  • Microsoft 託管代理程式已預先安裝 Azure CLI。 不過如果你使用私人代理程式,請在執行建置與釋出代理程式的電腦上安裝Azure CLI。 如果安裝 Azure CLI 的機器上已經有代理程式在執行,請重新啟動代理程式,確保所有相關的階段變數都已更新。

要求

需求 說明
管線類型 YAML、傳統組建、傳統版本
執行於 Agent、DeploymentGroup
要求 沒有
能力 此工作不符合作業中後續工作的任何需求。
命令限制 任意
Settable 變數 任意
代理程式版本 2.0.0 或更新
任務類別 部署