在 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
輸入別名: connectedServiceNameARM。
string。
connectionType = azureRM時為必要項。
請指定部署所需的 Azure Resource Manager 服務連線。
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或殼層腳本。 批次檔的話,每個 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 - Access 服務主體詳細數據
boolean。 預設值: false。
將你選擇的 Azure 端點的服務主體 id、服務主鍵和租戶 id 加入腳本的執行環境。 你可以在腳本中使用變數: servicePrincipalId, servicePrincipalKey 以及 tenantId 。
只有當 Azure 端點採用服務主體認證方案時,才會被遵守。
根據腳本類型存取環境變數的語法。
Powershell script: $env:servicePrincipalId
批次腳本:%servicePrincipalId%
殼體:$servicePrincipalId。
useGlobalConfig
-
使用全域Azure CLI配置
boolean。 預設值: false。
若此輸入為假,該任務將使用獨立的 Azure CLI 配置目錄。 這可用於執行Azure CLI任務,parallel 版本。
workingDirectory
-
工作目錄
輸入別名: cwd。
string。
指定執行腳本的工作目錄。 若留空,預設為倉庫(建置)或工件(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 或更新 |
| 任務類別 | 部署 |