AZURE DEVOPS CLI v YAML kanálu Azure

Služby Azure DevOps

Note

Tato funkce se zavádí tento týden a další. Pokud tuto funkci ještě v projektu služby Azure DevOps Services nevidíte, vraťte se za několik dní.

rozhraní příkazového řádku Azure DevOps umožňuje spravovat prostředky Azure DevOps z příkazového řádku. Spouštění příkazů rozhraní příkazového řádku v kanálu YAML pomocí úlohy AzureCLI@3 k automatizaci běžných úloh DevOps v rámci pracovního postupu CI/CD. Windows a Linux agenty hostovanými Microsoftem už zahrnují Azure CLI a rozšíření Azure DevOps CLI.

K ověřování použijte připojení služby Azure DevOps založené na federaci identit úloh Microsoft Entra. Tento přístup doporučujeme, protože eliminuje správu přihlašovacích údajů. Osobní přístupový token (PAT) používejte jenom v případech, kdy není připojení služby k dispozici.

Ověřování pomocí Azure DevOps

Některé příkazy rozhraní příkazového řádku Azure DevOps, například az devops configure a az devops --help, nevyžadují žádné ověřování. Nepřipojují se k Azure DevOps. Většina příkazů komunikuje s Azure DevOps a vyžaduje ověřování.

Můžete se ověřit pomocí tokenu zabezpečení System.AccessToken používaného spuštěným kanálem tak, že ho přiřadíte k proměnné prostředí s názvem AZURE_DEVOPS_EXT_PAT, jak je znázorněno v následujícím příkladu.

Použití System.AccessToken spoléhá na mít osobní přístupový token (PAT). Jako bezpečnější alternativu použijte připojení ke službě. Pokyny k nastavení najdete v tématu Správa připojení služeb.

- bash: |
    az pipelines build list --organization '$(System.TeamFoundationCollectionUri)' --project '$(System.TeamProject)'
  displayName: 'Show build list'
  env:
    AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)

Pokud máte více kroků, které vyžadují ověření, přidejte proměnnou AZURE_DEVOPS_EXT_PAT prostředí do každého kroku.

Další informace o rozsahu tokenu zabezpečení používaného spuštěným kanálem najdete v tématu Přístupová úložiště, artefakty a další prostředky.

Další informace o ověřování pomocí tokenu PAT najdete v tématu Přihlášení pomocí osobního přístupového tokenu.

Přihlášení k rozhraní příkazového řádku Azure DevOps pomocí agentů hostovaných Windows a Linuxu

Agenti Microsoft hostovaní Windows a Linux jsou předem nakonfigurovaní s Azure CLI a rozšířením rozhraní příkazového řádku Azure DevOps.

Následující příklad ukazuje, jak se přihlásit k Azure DevOps a spustit několik příkazů. Tento příklad používá image hostovaného agenta Microsoftu ubuntu-latest. Můžete ho nahradit některou z jiných Windows nebo Linuxem hostovaných obrazů.

Tento příklad se ověřuje pomocí rozhraní příkazového řádku Azure DevOps. Používá bezpečnostní token System.AccessToken, který používá běžící pipeline.

trigger:
- main

pool:
  vmImage: 'ubuntu-latest'

steps:
- bash: az --version
  displayName: 'Show Azure CLI version'

- bash: az devops configure --defaults organization='$(System.TeamFoundationCollectionUri)' project='$(System.TeamProject)' --use-git-aliases true
  displayName: 'Set default Azure DevOps organization and project'

- bash: |
    az pipelines build list
    git pr list
  displayName: 'Show build list and PRs'
  env:
    AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)

Instalace rozšíření rozhraní příkazového řádku Azure DevOps s agenty hostovanými v systému macOS

Agenti hostovaní Microsoft macOS mají nainstalované Azure CLI, ale ne rozšíření rozhraní příkazového řádku Azure DevOps. Chcete-li nainstalovat rozšíření Azure DevOps CLI, spusťte následující příkaz v pipeline před provedením jakýchkoli volání Azure DevOps CLI.

# Install Azure DevOps extension
- bash: az extension add -n azure-devops
  displayName: 'Install Azure DevOps extension'

Upgrade verze hostovaného agenta Azure CLI

Agenti hostovaní Microsoftem obvykle nasazují týdenní aktualizace softwaru ve virtuálních prostředích. U některých nástrojů se používá nejnovější verze v době nasazení. V jiných případech je nástroj připnutý ke konkrétním verzím.

  • Pokud chcete zkontrolovat zahrnutý software a jejich verze pro agenty hostované Microsoft, včetně nainstalované verze rozšíření Azure CLI a Azure DevOps CLI, postupujte podle odkazů Included Software v tabulce Software.
  • Pokud chcete zkontrolovat aktuální verzi Azure CLI, přečtěte si téma Jak nainstalovat Azure CLI.

Azure CLI na hostovaných imagích můžete upgradovat spuštěním následujících příkazů v pipeline.

# Specify python version
- task: UsePythonVersion@0
  inputs:
    versionSpec: '3.x'
    architecture: 'x64'

# Update to latest Azure CLI version
- bash: pip install --pre azure-cli
  displayName: 'Upgrade Azure CLI'

Podmíněná instalace rozšíření rozhraní příkazového řádku Azure DevOps

Pokud vaše pipelina běží na několika imagích virtuálních počítačů hostovaných Microsoftem a některé z nich nemají nainstalované rozšíření Azure DevOps CLI, můžete nainstalovat podmíněně.

trigger:
- main

# Run on multiple Microsoft-hosted agent images
strategy:
  matrix:
    linux24:
      imageName: "ubuntu-24.04"
    linux22:
      imageName: "ubuntu-22.04"
    mac15:
      imageName: "macos-15"
    mac14:
      imageName: "macos-14"
    windows2025:
      imageName: "windows-2025"
  maxParallel: 3

pool:
  vmImage: $(imageName)

steps:
- bash: az --version
  displayName: 'Show Azure CLI version'

# Install Azure DevOps CLI extension only on macOS images
- bash: az extension add -n azure-devops
  condition: contains(variables.imageName, 'mac')
  displayName: 'Install Azure DevOps extension'

# Azure DevOps CLI extension call that does not require login or credentials
# since it configures the local environment
- bash: az devops configure --defaults organization='$(System.TeamFoundationCollectionUri)' project='$(System.TeamProject)' --use-git-aliases true
  displayName: 'Set default Azure DevOps organization and project'

# Call that does require credentials, use the System.AccessToken PAT
# and assign to AZURE_DEVOPS_EXT_PAT which is known to Azure DevOps CLI extension
- bash: |
    az pipelines build list
    git pr list
  env:
    AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)
  displayName: 'Show build list and PRs'

Azure DevOps CLI s agenty v místním prostředí

Následující metody můžete použít k instalaci nebo upgradu rozhraní příkazového řádku Azure DevOps ve vašem místním agentu.

Ruční instalace rozšíření rozhraní příkazového řádku Azure CLI a Azure DevOps

Instalace Azure CLI a rozšíření Azure DevOps CLI na samostatně hostovaného agenta při zřizování image virtuálního počítače pro agenta je rychlejší než jejich instalace při každém spuštění pipeline.

Pokud chcete nainstalovat Azure CLI na image agenta v místním prostředí, přečtěte si téma Instalace Azure CLI. Existují samostatné pokyny pro Windows, Linux a macOS.

Po instalaci Azure CLI nainstalujte rozšíření rozhraní příkazového řádku Azure DevOps.

Nainstalujte rozšíření Azure CLI a Azure DevOps CLI do vaší pipeline

Následující příklad konfigurace rozšíření Azure CLI a Azure DevOps CLI na samostatně hostovaném agentovi pomocí pipeline má tyto předpoklady.

# Specify python version if you have side-by-side versions
- task: UsePythonVersion@0
  inputs:
    versionSpec: '3.x'
    architecture: 'x64'

# Update pip to latest
- bash: python -m pip install --upgrade pip
  displayName: 'Upgrade pip'

# Update to latest Azure CLI version, min version required for Azure DevOps is 2.10.1
- bash: pip install --pre azure-cli
  displayName: 'Upgrade Azure CLI'

Nainstalujte rozšíření Azure CLI DevOps:

  • je nainstalovaná Azure CLI verze 2.10.1 nebo vyšší.
  • V agentovi a v cestě je nainstalovaná verze bash . K použití úlohy Bash se vyžaduje instalace Bash.
# Install Azure DevOps extension
- bash: az extension add -n azure-devops
  displayName: 'Install Azure DevOps extension'

# Now you can make calls into Azure DevOps CLI
# ...

Následující příklad nainstaluje Azure CLI následované rozšířením Azure DevOps CLI.

steps:
# Specify python version if you have side-by-side versions
- task: UsePythonVersion@0
  inputs:
    versionSpec: '3.x'
    architecture: 'x64'

# Update pip to latest
- bash: python -m pip install --upgrade pip
  displayName: 'Upgrade pip'

# Update to latest Azure CLI version, min version required for Azure DevOps is 2.10.1
- bash: pip install --pre azure-cli
  displayName: 'Upgrade Azure CLI'

# Install Azure DevOps extension
- bash: az extension add -n azure-devops
  displayName: 'Install Azure DevOps extension'

# Now you can make calls into Azure DevOps CLI
# ...

Přiřaďte výsledky volání Azure DevOps CLI do proměnné

Pokud chcete uložit výsledky volání Azure DevOps CLI do proměnné pipeline, použijte syntaxi task.setvariable popsanou v Set variables in scripts. Následující příklad získá ID skupiny proměnných s názvem Fabrikam-2023 a použije tuto hodnotu v následujícím kroku.

variables:
- name: variableGroupId

trigger: none

pool:
  vmImage: "ubuntu-latest"

steps:
- bash: az devops configure --defaults organization='$(System.TeamFoundationCollectionUri)' project='$(System.TeamProject)' --use-git-aliases true
  displayName: 'Set default Azure DevOps organization and project'

- bash: echo "##vso[task.setvariable variable=variableGroupId]$(az pipelines variable-group list --group-name Fabrikam-2023 --query [].id -o tsv)"
  env:
    AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)
  displayName: 'Get Fabrikam-2023 variable group id'

- bash: az pipelines variable-group variable list --group-id '$(variableGroupId)'
  env:
    AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)
  displayName: 'List variables in Fabrikam-2023 variable group'

Ověřování pomocí připojení ke službě

Pokud používáte připojení služby, služba poskytuje nezbytné přihlašovací údaje pro příkazy Azure CLI a Azure DevOps CLI v úloze AzureCLI@3, aniž by bylo potřeba ručně spravovat přihlašovací údaje v kanálu.

Note

Pokud pro ověřování s AzureCLI@3 používáte připojení služby, musíte manuálně přidat zástupce služby do organizace Azure DevOps.

Osvědčené postupy bez použití PAT a pro připojení služeb najdete v tématu Správa připojení služeb.

Tento vzorový kód definuje nový parametr serviceConnections názvem existujícího připojení služby. Na tento parametr se AzureCLI@3 odkazuje v úloze. Skript používá připojení bez bezpečnostního kódu k volání koncového bodu REST a poté vypíše projekty a pooly.

trigger:
  - main

parameters:
- name: serviceConnection
  displayName: Azure DevOps Service Connection Name
  type: string
  default: my-service-connection

steps:
  - task: AzureCLI@3
    displayName: Secret-less
    inputs:
      connectionType: 'azureDevOps'
      azureDevOpsServiceConnection: '${{ parameters.serviceConnection }}'
      scriptType: 'pscore'
      scriptLocation: 'inlineScript'
      inlineScript: |
        az rest --method get `
                --url "https://status.dev.azure.com/_apis/status/health?api-version=7.1-preview.1" `
                --resource 499b84ac-1321-427f-aa17-267ca6975798 `
                --query "sort_by(services[?id=='Pipelines'].geographies | [], &name)" `
                -o table

        az devops configure -l

        az devops project list --query "value[].{Name:name, Id:id}" `
                              -o table

        az pipelines pool list --query "[].{Id:id, Name:name}" `
                              -o table
      failOnStandardError: true

Přiřaďte výsledky volání Azure DevOps CLI do proměnné

Pokud chcete uložit výsledky volání Azure DevOps CLI do proměnné pipeline, použijte syntaxi task.setvariable popsanou v Set variables in scripts. Následující příklad získá ID skupiny proměnných s názvem kubernetes a použije tuto hodnotu v dalším kroku.

trigger:
  - main

variables:
- name: variableGroupId

parameters:
- name: serviceConnection
  displayName: Azure DevOps Service Connection Name
  type: string
  default: my-service-connection

steps:
  - task: AzureCLI@3
    displayName: Set variable group ID
    inputs:
      connectionType: 'azureDevOps'
      azureDevOpsServiceConnection: '${{ parameters.serviceConnection }}'
      scriptType: 'pscore'
      scriptLocation: 'inlineScript'
      inlineScript: |
        az devops configure -l

        $id = az pipelines variable-group list --group-name kubernetes --query [].id -o tsv
        Write-Host "##vso[task.setvariable variable=variableGroupId]$id"

  - task: AzureCLI@3
    displayName: List variable group variables
    inputs:
      connectionType: 'azureDevOps'
      azureDevOpsServiceConnection: '${{ parameters.serviceConnection }}'
      scriptType: 'pscore'
      scriptLocation: 'inlineScript'
      inlineScript: |
        az pipelines variable-group variable list --group-id '$(variableGroupId)'

Další příklady práce s proměnnými, včetně práce s proměnnými napříč úlohami a fázemi, najdete v tématu Definice proměnných. Pro příklady syntaxe dotazu použité v předchozím příkladu se podívejte na Jak dotazovat výstup příkazu Azure CLI pomocí dotazu JMESPath.