Sdílet prostřednictvím


Typy úkolů a využití

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022 | Azure DevOps Server 2020

Úlohy Azure Pipelines se skládají z kroků, které můžou být úkoly nebo skripty. Úloha je předem zabalený skript nebo procedura, která provádí akci nebo používá sadu vstupů k definování automatizace kanálu. Tento článek popisuje úlohy kanálu a jejich použití. Informace o schématu najdete v definici steps.task .

Azure Pipelines zahrnuje řadu předdefinovaných úloh, které umožňují základní scénáře sestavení a nasazení. Seznam dostupných předdefinovaných úloh Azure Pipelines najdete v referenčních informacích k úlohám Azure Pipelines. Úlohy můžete také nainstalovat z Webu Visual Studio Marketplace nebo vytvořit vlastní úlohy.

Ve výchozím nastavení se všechny kroky v úloze spouštějí postupně ve stejném kontextu, ať už na hostiteli nebo v kontejneru úloh. Volitelně můžete použít cíle kroků k řízení kontextu pro jednotlivé úkoly. Pokud chcete spouštět některé úlohy paralelně na několika agentech nebo bez použití agenta, přečtěte si téma Určení úloh v kanálu.

Správa úloh

Úlohy jsou dostupné a nainstalované na úrovni organizace Azure DevOps. Můžete používat jenom úlohy a verze úkolů, které existují pro vaši organizaci.

Předdefinované úlohy, úlohy z Marketplace nebo obojí můžete zakázat vnastavení>> organizace v rámci omezení úkolů. Pokud zakážete předdefinované úlohy i úlohy z Marketplace, budou k dispozici jenom úlohy, které nainstalujete pomocí rozhraní příkazového řádku Node pro Azure DevOps .

Zakázání úloh Marketplace může pomoct zlepšit zabezpečení kanálu. Za většiny okolností byste neměli zakazovat předdefinované úlohy. Další informace naleznete v tématu Řízení dostupných úkolů.

Vlastní úkoly

Visual Studio Marketplace nabízí mnoho rozšíření, která můžete nainstalovat pro rozšíření katalogu úloh Azure Pipelines. Můžete také vytvářet vlastní úkoly. Další informace najdete v tématu Přidání vlastního rozšíření úloh kanálů.

V kanálech YAML odkazujete na úlohy podle názvu. Pokud název vlastního úkolu odpovídá předdefinovanému názvu úlohy, kanál použije integrovanou úlohu. Pokud se chcete této situaci vyhnout, můžete na svůj vlastní úkol odkazovat pomocí jedinečného identifikátoru GUID úkolu, který jste při vytváření úkolu přiřadili. Další informace najdete v tématu Principy komponent task.json.

Verze úloh

Úlohy jsou verze a musíte zadat hlavní verzi úloh, které používáte ve svém kanálu. Zadání verze pomáhá zabránit problémům při vydání nových verzí úlohy.

Kanály se automaticky aktualizují tak, aby používaly nové podverze úloh, například 1.2 až 1.3. Podverze úloh jsou obvykle zpětně kompatibilní, ale v některých scénářích může docházet k nepředvídatelným chybám, když se úloha automaticky aktualizuje.

Pokud nová hlavní verze úlohy, například verze 2.0, váš kanál bude dál používat hlavní verzi, kterou jste zadali, dokud kanál ručně nezměníte na novou hlavní verzi. Protokoly sestavení poskytují výstrahy, když jsou k dispozici nové hlavní verze. Můžete použít jenom verze úloh, které existují pro vaši organizaci.

V YAML zadáte hlavní verzi pomocí @ názvu úkolu. Chcete-li například použít verzi 2 PublishTestResults úkolu, zadejte PublishTestResults@2. Podverzi, kterou podverzi použít, můžete zadat zadáním úplného čísla verze úkolu za , @například GoTool@0.3.1.

Možnosti úkolů

Pro kroky kanálu task YAML jsou k dispozici následující vlastnosti. Další informace najdete v definici steps.task .

Vlastnictví Typ Description
task řetězec Povinné jako první vlastnost. Název úlohy, která se má spustit.
inputs řetězec Vstupy pro úkol pomocí párů název/hodnota.
condition řetězec Podmínky, za kterých se úloha spouští.
continueOnError Boolean Zda pokračovat v provozu i při selhání.
displayName řetězec Název úkolu čitelný pro člověka.
enabled Boolean Určuje, jestli se má tato úloha spustit při spuštění úlohy.
env řetězec Proměnné, které se mají namapovat do procesního prostředí, pomocí párů name/value
name řetězec ID kroku.
retryCountOnTaskFailure řetězec Počet opakování v případě selhání úkolu
target řetězec Prostředí pro spuštění této úlohy
timeoutInMinutes řetězec Maximální doba, po kterou může úloha běžet před automatickým zrušením.

Podmínky

Úkol nemůže určit, zda má pokračovat v úloze kanálu po dokončení úkolu, pouze poskytnout stav ukončení, například succeeded nebo failed. Podřízené úkoly a úlohy pak můžou nastavit condition na základě daného stavu, abyste zjistili, jestli se má spustit.

Vlastnost podmínky určuje podmínky, za kterých se tato úloha spouští. Ve výchozím nastavení se krok spustí, pokud v úloze ještě nic selhalo a krok bezprostředně před dokončením.

Tyto výchozí hodnoty můžete přepsat nebo přizpůsobit nastavením kroku tak, aby se spustil, a to i v případě, že předchozí závislost selže nebo má jiný výsledek. Můžete také definovat vlastní podmínky, které se skládají z výrazů.

Poznámka:

Podmínky platí pro všechny předchozí přímé a nepřímé závislosti se stejným fondem agentů. Fáze nebo úlohy v různých fondech agentů běží souběžně.

Mezi podmínky založené na předchozím stavu závislosti patří:

  • Úspěch: Spusťte pouze v případě, že všechny předchozí závislosti budou úspěšné. Toto chování je výchozí, pokud v YAML není nastavena žádná podmínka. Chcete-li použít tuto podmínku, zadejte condition: succeeded().
  • Úspěšné nebo neúspěšné: Spusťte i v případě selhání předchozí závislosti, pokud není spuštění zrušeno. Chcete-li použít tuto podmínku, zadejte condition: succeededOrFailed().
  • Vždy: Spusťte i v případě selhání předchozí závislosti, i když je spuštění zrušeno. Chcete-li použít tuto podmínku, zadejte condition: always().
  • Selhání: Spusťte pouze v případě, že předchozí závislost selže. Chcete-li použít tuto podmínku, zadejte condition: failed().

V následujícím příkladu YAML se spustí i v případě, PublishTestResults@2 že předchozí krok selhal kvůli úspěšné podmínceOrFailed .

steps:
- task: UsePythonVersion@0
  inputs:
    versionSpec: '3.x'
    architecture: 'x64'
- task: PublishTestResults@2
  inputs:
    testResultsFiles: "**/TEST-*.xml"
  condition: succeededOrFailed()

Pokračovat při chybě

Vlastnost continueOnError informuje úlohu, zda má pokračovat ve spuštění a hlásit úspěch bez ohledu na selhání. Pokud je nastavená hodnota true, tato vlastnost dává úkolu pokyn, aby ignoroval failed stav a pokračoval ve spuštění. Podřízené kroky a úlohy považují výsledek úkolu za to, že success při rozhodování o jejich spuštění.

Povoleno

Ve výchozím nastavení se úloha spustí při každém spuštění úlohy. Můžete nastavit enabled , aby false se úloha zakázala. Dočasné zakázání úlohy je užitečné odebrat úlohu z procesu pro účely testování nebo pro konkrétní nasazení.

Počet opakování při selhání úlohy

Vlastnost retryCountOnTaskFailure určuje, kolikrát se má úloha opakovat, pokud selže. Ve výchozím nastavení není povoleno žádné opakování.

  • Maximální povolený počet opakování je 10.
  • Doba čekání před opakovaným pokusem se po každém neúspěšném pokusu zvýší po exponenciální strategii zpětného ukončení. První opakování proběhne po 1 sekundě, druhé opakování po 4 sekundách a desáté opakování po 100 sekundách.
  • Opakování úlohy neposkytuje idempotenci. Vedlejší účinky prvního pokusu, například částečné vytvoření externího prostředku, můžou způsobit selhání opakování.
  • Pro úkol nejsou k dispozici žádné informace o počtu opakování.
  • Selhání úlohy přidá do protokolů úloh upozornění, že selhala před opakováním úkolu.
  • Všechny pokusy o opakování se zobrazí v uživatelském rozhraní jako součást stejného uzlu úkolu.

Poznámka:

Vlastnost retryCountOnTaskFailure vyžaduje agenta verze 2.194.0 nebo novější. V Azure DevOps Serveru 2022 se opakované pokusy nepodporují pro úlohy bez agentů. Další informace najdete v tématu Aktualizace služby Azure DevOps z 16. listopadu 2021 – Automatické opakování pro úlohu a aktualizaci služby Azure DevOps z 14. června 2025 – Opakování pro úlohy serveru.

Target

Úlohy se spouští v prováděcím kontextu, což je buď hostitel agenta, nebo kontejner. Úkol může přepsat jeho kontext zadáním .target Dostupné možnosti jsou host určené pro cílení na hostitele agenta a všechny kontejnery definované v kanálu. V následujícím příkladu SampleTask@1 běží na hostiteli a AnotherTask@1 běží v kontejneru.

resources:
  containers:
  - container: pycontainer
    image: python:3.11

steps:
- task: SampleTask@1
  target: host
- task: AnotherTask@1
  target: pycontainer

Časový limit

Období časového limitu začíná při spuštění úlohy a nezahrnuje čas, kdy je úkol zařazen do fronty nebo čeká na agenta.

Poznámka:

Kanály můžou kromě časového limitu na úrovni úlohy určit časový limit na úrovni úlohy. Pokud časový limit na úrovni úlohy uplynul před dokončením úkolu, spuštěná úloha se ukončí, i když je úkol nakonfigurovaný s delším časovým limitem. Další informace najdete v tématu Časové limity.

Proměnné prostředí

Proměnné prostředí můžete použít k mapování systémových nebo uživatelem definovaných informací do procesu úkolu.

Úloha kanálu YAML může zadat env vlastnost, která uvádí řetězce názvů a hodnot, které představují proměnné prostředí.

- task: AzureCLI@2
  env:
    ENV_VARIABLE_NAME: value
    ENV_VARIABLE_NAME2: value
  ...

Proměnné prostředí můžete nastavit pomocí script kroků nebo pomocí skriptů v úlohách příkazového řádku, Bash nebo PowerShellu.

Následující příklad spustí script krok, který přiřadí hodnotu proměnné ENV_VARIABLE_NAME prostředí a ozvěna hodnotu.

- script: echo "This is " $ENV_VARIABLE_NAME
  env:
    ENV_VARIABLE_NAME: value
  displayName: 'echo environment variable'

Předchozí skript je funkčně stejný jako spuštění úlohy Bash@3 se vstupem script . Následující příklad používá syntaxi task .

- task: Bash@3
  inputs:
    script: echo "This is " $ENV_VARIABLE_NAME
  env:
    ENV_VARIABLE_NAME: value
  displayName: 'echo environment variable'

Úlohy instalačního programu nástroje sestavení

Úlohy instalačního programu nástroje sestavení umožňují kanálu buildu instalovat a řídit závislosti. Úlohy instalačního programu nástroje sestavení můžete použít k:

  • Nainstalujte nástroj nebo modul runtime pro sestavení, včetně agentů hostovaných Microsoftem.
  • Ověřte aplikaci nebo knihovnu na více verzích závislosti, jako je Node.js.

Seznam úloh instalačního programu nástrojů najdete v tématu Úlohy nástroje.

Příklad: Testování a ověření aplikace ve více verzích Node.js

Následující příklad nastaví kanál buildu pro spuštění a ověření aplikace v několika verzích Node.js.

Vytvořte soubor azure-pipelines.yml s následujícím obsahem v základním adresáři projektu.

pool:
  vmImage: 'windows-latest'

jobs:
- job: NodeJS
  strategy:
    matrix:
      node14:
        nodeVersion: '14.x'
      node16:
        nodeVersion: '16.x'
    maxParallel: 2
  steps:
    - task: NodeTool@0
      displayName: 'Install Node.js $(nodeVersion)'
      inputs:
        versionSpec: '$(nodeVersion)'
        checkLatest: true

    - script: |
        echo Using Node version $(nodeVersion)
        node --version
      displayName: 'Verify Node Installation'

Uložte a spusťte kanál. Úloha se spustí dvakrát, jedna pro každou verzi Node.js, kterou jste zadali nodeVersion v proměnné.

Instalační program nástroje Node.js stáhne verzi Node.js, pokud ještě není v agentovi. Skript příkazového řádku zapíše nainstalovanou verzi do příkazového řádku.

Nápověda a podpora