Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
Ú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é úkoly paralelně na několika agentech nebo bez použití agenta, podívejte se na Specifikace úkolů ve vašem pipeline.
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 v Nastavení organizace>Pipelines>Nastavení 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 verzovány a musíte zadat hlavní verzi úloh, které používáte ve svém workflow. 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 vyjde nová hlavní verze úlohy, například verze 2.0, váš kanál bude nadále používat vámi zadanou hlavní verzi, dokud ručně neupravíte kanál, aby používal 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. Můžete zadat, kterou podverzi chcete použít, tím, že poskytnete úplné číslo 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 chybě. |
displayName |
řetězec | Název úkolu čitelný pro člověka. |
enabled |
Boolean | Určuje, jestli se má tato úloha spustit současně s běžícím úkolem. |
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 běh 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á po dokončení pokračovat s pipeline úlohou; může pouze zajistit stav ukončení, například succeeded nebo failed. Podřízené úkoly a úlohy pak mohou nastavit condition na základě daného stavu, aby určily, zda mají běžet.
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 jeho úloze ještě nic neselhalo a krok bezprostředně před ním byl dokončen.
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ří:
-
Dokončeno: Spusťte pouze v případě, že všechny předchozí závislosti jsou ú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 PublishTestResults@2 spustí i v případě selhání předchozího kroku, díky podmínce succeededOrFailed.
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 success, když se rozhodují 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 na false pro zakázání úlohy. Dočasné zakázání úlohy je užitečné pro odebrání úlohy z procesu pro účely testování nebo pro určité 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ýší podle exponenciální strategie odlož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, jako je částečné vytvoření externího prostředku, mohou způsobit selhání opakovaného pokusu.
- 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 svůj kontext zadáním target. Dostupné možnosti jsou host pro cílení na hostitele agenta a všechny kontejnery definované v pipeline. 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 mohou kromě časového limitu na úrovni úkolu určit i č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é prostředí ENV_VARIABLE_NAME a vypíše tuto 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 pipeline. Ú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.
Související obsah
Nápověda a podpora
- Projděte si tipy pro řešení potíží.
- Získejte rady o Stack Overflow.
- Zveřejněte své otázky, vyhledejte odpovědi nebo navrhněte funkci v komunitě vývojářů Azure DevOps.
- Získejte podporu pro Azure DevOps.