Azure CLI 工作

Azure DevOps Services |Azure DevOps Server 2020 |Azure DevOps Server 2019

使用此工作可針對 Azure 訂用帳戶執行包含 Azure CLI 命令的 shell 或批次腳本。 這項工作是用來在 Linux、macOS 或 Windows 作業系統上執行的跨平臺代理程式上執行 Azure CLI 命令。

2.0 版的新功能

  • 支援執行 PowerShell 和 PowerShell Core 腳本。
  • PowerShell Core 腳本適用于 (Windows、Linux 或 OSX) 的 Xplat 代理程式,請確定代理程式具有 PowerShell 第6版或更高版本。
  • powershell 腳本只適用于 Windows 代理程式,請確定代理程式具有 PowerShell 第5版或更低版本。

必要條件

  • Microsoft Azure 訂用帳戶。

  • azure Resource Manager 服務連接到您的 azure 帳戶。

  • Microsoft 裝載的代理程式已預先安裝 Azure CLI。 但是,如果您使用私人代理程式,請在執行組建和發行代理程式的電腦 (s) 上 安裝 Azure CLI 。 如果已在安裝 Azure CLI 的電腦上執行代理程式,請重新開機代理程式,以確保所有相關的階段變數都已更新。

工作輸入

參數 描述
azureSubscription
Azure 訂用帳戶
(Azure Resource Manager 服務連線所需的) 名稱
scriptType
指令碼類型
(需要) 的腳本類型:
如果您使用 Linux 代理程式,請選取下列其中一種類型:
  • bash
  • pscore
如果您使用Windows 代理程式,請選取下列其中一種類型:
  • batch
  • ps
  • pscore

* PowerShell Core 腳本可以在 (Linux、macOS 或 Windows) 的跨平臺代理程式上執行。
scriptLocation
指令碼位置
(必要) 選擇 scriptPath 使用腳本檔案,或 inlineScript 如果您想要以內嵌方式撰寫腳本
預設值: scriptPath
scriptPath
腳本路徑
scriptLocation = scriptPath必要時機。 腳本檔案的完整路徑,或相對於預設工作目錄的路徑
inlineScript
內嵌指令碼
scriptLocation = inlineScript必要時機。 如果您想要以內嵌方式貼上腳本,請使用此選項。 使用以 Linux 為基礎的代理程式時,請使用適用于 Windows 代理程式和 bash 或 PowerShell Core 的 PowerShell、PowerShell Core 或批次腳本。 當您使用 batch 時,請使用每個 Azure 命令前面的 call 前置詞。 您也可以使用引數,將預先定義的自訂變數傳遞至腳本。
範例:
PowerShell/PowerShellCore/shell: az--az 版帳戶顯示
batch:呼叫 az--版本呼叫 az account show
arguments
指令碼引數
(傳遞給腳本的選擇性) 引數
powerShellErrorActionPreference
ErrorActionPreference
(選擇性) 在 PowerShell/PowerShell Core 腳本頂端前面加上行$ErrorActionPreference = ' VALUE '
預設值:停止
選項為停止、繼續和 silentlyContinue
addSpnToEnvironment
存取腳本中的服務主體詳細資料
(選擇性) 將您選擇的 Azure 端點的服務主體識別碼和金鑰新增至腳本的執行環境。 您可以在腳本中使用這些變數: $env: servicePrincipalId、$env: servicePrincipalKey 和 $env: tenantId 。 只有在 Azure 端點具有服務主體驗證配置時,才會接受這項功能
預設值: false
useGlobalConfig
使用全域 Azure CLI 設定
(選擇性) 如果為 false,則此工作會使用自己的個別 Azure CLI 設定目錄。 這可以用來在 平行 發行版本中執行 Azure CLI 工作」
預設值: false
workingDirectory
工作目錄
(選擇性) 執行腳本的目前工作目錄。 空的是存放庫的根目錄, (組建) 或構件 (版本) ,也就是 $ (System.defaultworkingdirectory)
failOnStandardError
發生標準錯誤時失敗
(選擇性) 如果是 true,當任何錯誤寫入 StandardError 資料流程時,此工作將會失敗。 取消選取此核取方塊,以忽略標準錯誤並依賴結束代碼來判斷狀態
預設值: false
powerShellIgnoreLASTEXITCODE
忽略 $LASTEXITCODE
(選擇性) 如果為 false,則會將該行 if ((Test-Path -LiteralPath variable:\\LASTEXITCODE)) { exit $LASTEXITCODE } 附加至腳本的結尾。 這會導致外部命令的最後一個結束代碼傳播為 PowerShell 的結束代碼。 否則該行不會附加至腳本結尾
預設值: false

範例

以下是 YAML 程式碼片段的範例,其中會列出 Azure CLI 的版本,並取得訂用帳戶的詳細資料。

- task: AzureCLI@2
  displayName: Azure CLI
  inputs:
    azureSubscription: <Name of the Azure Resource Manager service connection>
    scriptType: ps
    scriptLocation: inlineScript
    inlineScript: |
      az --version
      az account show

下列範例說明如何將引數傳遞至您的腳本。

  • 將引數傳遞至內嵌腳本:

    - task: AzureCLI@2
      inputs:
        azureSubscription: <Azure_Resource_Manager_Service_Connection>
        scriptType: 'ps'
        scriptLocation: 'inlineScript'
        arguments: '$(AZURE_STORAGE_ACCOUNT) $(AZURE_STORAGE_KEY)'
        inlineScript: './scripts/publish.ps1 $1 $2'
    
  • 使用腳本路徑傳遞引數:

    - task: AzureCLI@2
      inputs:
        azureSubscription: <Azure_Resource_Manager_Service_Connection>
        scriptType: 'ps'
        scriptLocation: 'scriptPath'
        arguments: '$(AZURE_STORAGE_ACCOUNT) $(AZURE_STORAGE_KEY)'
        scriptPath: './scripts/publish.ps1'
    

開放原始碼

這項工作開放原始碼在 GitHub 上。 歡迎您提供意見反應和投稿。

常見問題集

是否需要代理程式?

您至少需要一個 代理程式 來執行您的組建或發行。

我遇到問題。 如何進行疑難排解?

請參閱 疑難排解組建和發行

我無法選取預設的代理程式組件區,也無法將組建或發行排在佇列中。 我要如何修正此問題?

請參閱 代理程式集區。

我的 NuGet 推送工作失敗,發生下列錯誤:「錯誤:無法取得本機簽發者憑證」。 我該怎麼辦?

您可以藉由新增受信任的根憑證來修正此問題。 您可以將環境變數新增 NODE_EXTRA_CA_CERTS=file 至組建代理程式,也可以在管線中新增工作 NODE.EXTRA.CA.CERTS=file 變數。 如需此變數的詳細資訊,請參閱 Node.js 檔 。 如需在管線中設定變數的指示,請參閱在 管線中設定變數