Spuštění kanálu
Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019
Tento článek vysvětluje posloupnost aktivit v kanálech Azure Pipelines. Spuštění představuje jedno spuštění kanálu. Kanály průběžné integrace (CI) i průběžného doručování (CD) se skládají z spuštění. Během spuštění zpracovává Azure Pipelines kanál a agenti zpracovávají jednu nebo více úloh, kroků a úloh.
Pro každé spuštění Azure Pipelines:
- Zpracovává kanál.
- Vyžaduje jeden nebo více agentů ke spouštění úloh.
- Předá úlohy agentům a shromáždí výsledky.
Pro každou úlohu agent:
- Připraví se na úlohu.
- Spustí každý krok v úloze.
- Zaznamenává výsledky.
Úlohy můžou být úspěšné, neúspěšné, zrušené nebo nedokončí. Porozumění těmto výsledkům vám může pomoct s řešením problémů.
Následující části podrobně popisují proces spuštění kanálu.
Zpracování kanálu
Pokud chcete nejprve zpracovat kanál pro spuštění, Azure Pipelines:
- Rozbalí šablony a vyhodnotí výrazy šablon.
- Vyhodnotí závislosti na úrovni fáze a vybere první fázi, která se má spustit.
Pro každou fázi, která vybere ke spuštění, Azure Pipelines:
- Shromažďuje a ověřuje všechny prostředky úloh pro autorizaci ke spuštění.
- Vyhodnotí závislosti na úrovni úlohy a vybere první úlohu, která se má spustit.
Azure Pipelines pro každou úlohu, kterou vybere ke spuštění, provede následující aktivity:
- Rozšiřuje YAML
strategy: matrix
nebostrategy: parallel
více konfigurací do několika úloh modulu runtime. - Vyhodnotí podmínky a určí, jestli má úloha nárok na spuštění.
- Vyžaduje agenta pro každou oprávněnou úlohu.
Po dokončení úloh modulu runtime azure Pipelines zkontroluje, jestli jsou nové úlohy způsobilé ke spuštění. Podobně jako dokončené fáze azure Pipelines kontroluje, jestli existují nějaké další fáze.
Proměnné
Vysvětlení pořadí zpracování vysvětluje, proč nemůžete v parametrech šablony používat určité proměnné. První krok rozšíření šablony funguje pouze s textem souboru YAML. Proměnné modulu runtime ještě během tohoto kroku neexistují. Po provedení daného kroku se parametry šablony už přeloží.
Proměnné také nemůžete použít k překladu názvů připojení služby nebo prostředí, protože kanál autorizuje prostředky před spuštěním fáze. Proměnné na úrovni fáze a úlohy ještě nejsou k dispozici. Skupiny proměnných jsou samy o sobě prostředkem, který podléhá autorizaci, takže jejich data nejsou při kontrole autorizace prostředků k dispozici.
Můžete použít proměnné na úrovni kanálu, které jsou explicitně zahrnuty v definici prostředku kanálu. Další informace najdete v tématu Metadata prostředků kanálu jako předdefinované proměnné.
Agenti
Když Azure Pipelines potřebuje spustit úlohu, požádá o agenta z fondu. Tento proces funguje jinak pro fondy agentů hostovaných Microsoftem a hostovanými v místním prostředí .
Paralelní úlohy
Nejprve Azure Pipelines kontroluje paralelní úlohy vaší organizace. Služba sečte všechny spuštěné úlohy na všech agentech a porovná je s počtem paralelních úloh udělených nebo zakoupených.
Pokud nejsou k dispozici žádné paralelní sloty, musí úloha počkat na uvolnění slotu. Jakmile je k dispozici paralelní slot, úloha směruje do příslušného typu agenta.
Agenti hostovaní Microsoftem
Obecně platí, že fond hostovaný Microsoftem je jedním globálním fondem počítačů, i když je fyzicky mnoho různých fondů rozdělených podle zeměpisné oblasti a typu operačního systému. Na základě požadovaného názvu fondu editoru YAML vmImage
nebo Klasického editoru azure Pipelines vybere agenta.
Všichni agenti ve fondu Microsoftu jsou čerství a noví virtuální počítače, které nikdy nespouštějí žádné kanály. Po dokončení úlohy se virtuální počítač agenta zahodí.
Agenti v místním prostředí
Jakmile je k dispozici paralelní slot, Azure Pipelines prozkoumá fond v místním prostředí pro kompatibilního agenta. Agenti v místním prostředí nabízejí možnosti, které indikují, že je nainstalovaný konkrétní software nebo je nakonfigurované nastavení. Kanál má požadavky, což jsou možnosti potřebné ke spuštění úlohy.
Pokud Azure Pipelines nemůže najít bezplatného agenta, jehož schopnosti odpovídají požadavkům kanálu, úloha pokračuje v čekání. Pokud ve fondu nejsou žádní agenti, jejichž schopnosti odpovídají požadavkům, úloha selže.
Agenti v místním prostředí se obvykle opakovaně používají při spuštění ke spuštění. U agentů v místním prostředí může mít úloha kanálu vedlejší účinky, jako je zahřívání mezipamětí nebo většina potvrzení, která jsou už dostupná v místním úložišti.
Příprava úlohy
Jakmile agent přijme úlohu, provede následující přípravnou práci:
- Stáhne všechny úkoly potřebné ke spuštění úlohy a uloží je do mezipaměti pro budoucí použití.
- Vytvoří pracovní prostor na disku pro uložení zdrojového kódu, artefaktů a výstupů použitých při spuštění.
Provedení kroku
Agent spouští kroky postupně v pořadí. Před zahájením kroku je nutné dokončit nebo přeskočit všechny předchozí kroky.
Kroky jsou implementovány úkoly, které mohou být Node.js, PowerShell nebo jiné skripty. Systém úloh směruje vstupy a výstupy do záložních skriptů. Úlohy také poskytují běžné služby, jako je změna systémové cesty a vytváření nových proměnných kanálu.
Každý krok běží ve vlastním procesu a izoluje své prostředí z předchozích kroků. Vzhledem k tomuto modelu pro jednotlivé kroky se proměnné prostředí mezi kroky nezachovají. Úlohy a skripty ale můžou používat mechanismus označovaný jako příkazy protokolování ke komunikaci zpět s agentem. Když úloha nebo skript zapíše příkaz protokolování do standardního výstupu, agent provede jakoukoli akci, která příkaz požaduje.
K vytvoření nových proměnných kanálu můžete použít příkaz protokolování. Proměnné kanálu se v dalším kroku automaticky převedou na proměnné prostředí. Skript může nastavit novou proměnnou myVar
s hodnotou myValue
následujícím způsobem:
echo '##vso[task.setVariable variable=myVar]myValue'
Write-Host "##vso[task.setVariable variable=myVar]myValue"
Generování sestav výsledků a kolekce
Každý krok může hlásit upozornění, chyby a chyby. Krok hlásí chyby a upozornění na stránce souhrnu kanálu tak, že označí úlohy jako úspěšné s problémy nebo hlásí selhání tím, že úlohu označí jako neúspěšnou. Krok selže, pokud buď explicitně hlásí selhání pomocí ##vso
příkazu, nebo ukončí skript nenulovým ukončovacím kódem.
Při spuštění kroků agent neustále odesílá výstupní řádky do Azure Pipelines, abyste viděli živý kanál konzoly. Na konci každého kroku se celý výstup kroku nahraje jako soubor protokolu. Po dokončení kanálu si můžete protokol stáhnout.
Agent může také nahrát artefakty a výsledky testů, které jsou k dispozici i po dokončení kanálu.
Stav a podmínky
Agent sleduje úspěšnost nebo selhání jednotlivých kroků. S úspěšnými kroky s problémy nebo selháním se stav úlohy aktualizuje. Úloha vždy odráží nejhorší výsledek každého z jeho kroků. Pokud krok selže, úloha také selže.
Před spuštěním kroku agent zkontroluje podmínku daného kroku a určí, jestli se má krok spustit. Ve výchozím nastavení se krok spustí jenom v případě, že je stav úlohy úspěšný nebo úspěšný s problémy, ale můžete nastavit další podmínky.
Mnoho úloh má kroky čištění, které je třeba spustit bez ohledu na to, co se stane, aby mohly určit podmínku always()
. Vyčištění nebo jiné kroky je také možné nastavit tak, aby běžely pouze při zrušení.
Úspěšný krok vyčištění nemůže uložit úlohu, aby selhala. Po vstupu do selhání se úlohy nikdy nemůžou vrátit k úspěchu.
Časové limity a odpojení
Každá úloha má časový limit. Pokud se úloha v zadaném čase nedokončí, server úlohu zruší. Server se pokusí signalizovat agenta, aby se zastavil, a označí úlohu jako zrušenou. Zrušení na straně agenta znamená zrušit všechny zbývající kroky a nahrát všechny zbývající výsledky.
Úlohy mají období odkladu označované jako časový limit zrušení, ve kterém se má dokončit jakákoli práce se zrušením. Můžete také označit kroky, které se mají spustit i při zrušení. Pokud agent po vypršení časového limitu úlohy a vypršení časového limitu zrušení nenahlásí, že je tato práce zastavená, označí server úlohu jako selhání.
Počítače agentů můžou přestat reagovat na server, pokud hostitelský počítač agenta ztratí napájení nebo je vypnutý nebo pokud dojde k selhání sítě. Aby agent tyto podmínky zjistil, odešle zprávu prezenčního signálu jednou za minutu, aby server věděl, že stále funguje.
Pokud server neobdrží prezenční signál po dobu pěti po sobě jdoucích minut, předpokládá se, že se agent nevrátí. Úloha se označí jako selhání a informuje uživatele, že by měl kanál zopakovat.
Správa běží prostřednictvím Azure DevOps CLI
Spuštění kanálu můžete spravovat pomocí az pipelines spuštění v Azure DevOps CLI. Pokud chcete začít, přečtěte si téma Začínáme s Azure DevOps CLI. Kompletní referenční informace k příkazům najdete v referenčních informacích k rozhraní příkazového řádku Azure DevOps.
Následující příklady ukazují, jak pomocí Azure DevOps CLI zobrazit seznam spuštění kanálu v projektu, zobrazit podrobnosti o konkrétním spuštění a spravovat značky pro spuštění kanálu.
Požadavky
- Azure CLI s nainstalovaným rozšířením Azure DevOps CLI, jak je popsáno v tématu Začínáme s Azure DevOps CLI. Přihlaste se k Azure pomocí
az login
. - Výchozí organizace nastavená pomocí .
az devops configure --defaults organization=<YourOrganizationURL>
Výpis spuštění kanálu
Vypište spuštění kanálu v projektu pomocí příkazu az pipelines runs list .
Následující příkaz zobrazí seznam prvních tří spuštění kanálu se stavem dokončení a výsledkem úspěchu a vrátí výsledek ve formátu tabulky.
az pipelines runs list --status completed --result succeeded --top 3 --output table
Run ID Number Status Result Pipeline ID Pipeline Name Source Branch Queued Time Reason
-------- ---------- --------- --------- ------------- -------------------------- --------------- -------------------------- ------
125 20200124.1 completed succeeded 12 Githubname.pipelines-java master 2020-01-23 18:56:10.067588 manual
123 20200123.2 completed succeeded 12 Githubname.pipelines-java master 2020-01-23 11:55:56.633450 manual
122 20200123.1 completed succeeded 12 Githubname.pipelines-java master 2020-01-23 11:48:05.574742 manual
Zobrazení podrobností o spuštění kanálu
Pomocí příkazu az pipelines run show zobrazte podrobnosti o spuštění kanálu v projektu.
Následující příkaz zobrazí podrobnosti o spuštění kanálu s ID 123, vrátí výsledky ve formátu tabulky a otevře webový prohlížeč na stránce výsledků sestavení Azure Pipelines.
az pipelines runs show --id 122 --open --output table
Run ID Number Status Result Pipeline ID Pipeline Name Source Branch Queued Time Reason
-------- ---------- --------- --------- ------------- -------------------------- --------------- -------------------------- --------
123 20200123.2 completed succeeded 12 Githubname.pipelines-java master 2020-01-23 11:55:56.633450 manual
Přidání značky ke spuštění kanálu
Přidejte značku ke spuštění kanálu v projektu pomocí příkazu az pipelines run tag add .
Následující příkaz přidá značku YAML do spuštění kanálu s ID 123 a vrátí výsledek ve formátu JSON.
az pipelines runs tag add --run-id 123 --tags YAML --output json
[
"YAML"
]
Výpis značek spuštění kanálu
Pomocí příkazu az pipelines run list v projektu vypište značky pro spuštění kanálu. Následující příkaz zobrazí seznam značek pro spuštění kanálu s ID 123 a vrátí výsledek ve formátu tabulky.
az pipelines runs tag list --run-id 123 --output table
Tags
------
YAML
Odstranění značky ze spuštění kanálu
Odstraňte značku z spuštění kanálu v projektu pomocí příkazu az pipelines run tag delete . Následující příkaz odstraní značku YAML z spuštění kanálu s ID 123.
az pipelines runs tag delete --run-id 123 --tag YAML