Sdílet prostřednictvím


Definice schvalování a kontrol

Služby Azure DevOps

Kanál se skládá z fází. Autor kanálu může řídit, jestli se má fáze spouštět definováním podmínek ve fázi. Další způsob, jak řídit, jestli a kdy má fáze proběhnout, je prostřednictvím schválení a kontrol.

Schválení a další kontroly nejsou definovány v souboru yaml. Uživatelé, kteří upravují soubor yaml kanálu, nemůžou upravit kontroly provedené před zahájením fáze. Správci prostředků spravují kontroly pomocí webového rozhraní Azure Pipelines.

Kanály využívají prostředky, jako jsou prostředí, připojení služeb, fondy agentů, skupiny proměnných a zabezpečené soubory. Zkontroluje, jestli vlastník prostředku může řídit, jestli a kdy fáze v jakémkoli kanálu může prostředek využívat. Jako vlastník prostředku můžete definovat kontroly, které musí být splněné před zahájením fáze, která tento prostředek zabírají. Například ruční kontrola schválení v prostředí zajišťuje, že nasazení do tohoto prostředí proběhne až po kontrole nasazených změn určeným uživatelem.

Fáze se může skládat z mnoha úloh a každá úloha může spotřebovávat několik prostředků. Před zahájením provádění fáze musí být splněny všechny kontroly všech prostředků použitých v této fázi. Azure Pipelines pozastaví spuštění kanálu před každou fází a čeká na dokončení všech čekajících kontrol.

Existuje pět kategorií schválení a kontrol a spouští se v pořadí, v jakém byly vytvořeny v rámci každé kategorie. Kontroly se znovu zhodnotují na základě intervalu opakování zadaného v každé kontrole. Pokud všechny kontroly nejsou úspěšné, dokud není zadaný časový limit , tato fáze se nespustí. Pokud některý z kontrol v terminálu selže (například pokud odmítnete schválení u některého z prostředků), neproběhne tato fáze.

Fázi můžete zkusit znovu, když vyprší časový limit schválení a kontroly.

Statické kontroly se spustí jako první a pak se spustí předběžné schválení. Kategorie jsou v pořadí:

  1. Statické kontroly: Řízení větví, Požadovaná šablona a Vyhodnocení artefaktu
  2. Předběžná kontrola schválení
  3. Dynamické kontroly: Schválení, vyvolání funkce Azure, vyvolání rozhraní REST API, pracovní doba, dotazování upozornění služby Azure Monitor
  4. Schválení po kontrole
  5. Exkluzivní zámek

Pořadí provádění můžete zobrazit také na kartě Schválení a kontroly .

Důležité

Kontroly je možné nakonfigurovat v prostředích, připojeních služeb, úložištích, skupinách proměnných, zabezpečených souborech a fondech agentů.

Připojení služeb nelze určit proměnnou.

Schválení

Pomocí schválení a kontrol můžete ručně řídit, kdy se má fáze spustit. Tato kontrola se běžně používá k řízení nasazení do produkčních prostředí.

  1. Přihlaste se ke své organizaci Azure DevOps a přejděte k projektu.

  2. Vyberte Prostředí kanálů>a pak vyberte vaše prostředí.

  3. Vyberte kartu Schválení a kontroly a pak výběrem znaménka + přidejte novou kontrolu.

    Snímek obrazovky znázorňující, jak přidat schválení a kontroly ve službě Azure Pipelines

  4. Vyberte Schválení a pak vyberte Další.

  5. Přidejte uživatele nebo skupiny jako určené schvalovatele a v případě potřeby zadejte pokyny pro schvalovatele. Určete, jestli chcete schvalovatelům povolit nebo omezit schvalování vlastních spuštění, a zadejte požadovaný časový limit. Pokud se schválení nedokončí v zadaném časovém limitu, fáze se označí jako přeskočená.

  6. Až budete hotovi, vyberte Vytvořit .

    Snímek obrazovky znázorňující, jak vytvořit nové schválení

  7. Po aktivaci kontroly schválení se v uživatelském rozhraní zobrazí okno výzvy, jak je znázorněno v následujícím příkladu. V tomto okně můžete schvalovatele buď odmítnout nebo schválit spuštění, a také všechny doprovodné pokyny.

    Snímek obrazovky s oknem výzvy ke schválení

Seznam uživatelů, kteří můžou zkontrolovat schválení, je opraven v době, kdy se schválení a kontroly spustí. To znamená, že změny v seznamu uživatelů a skupin kontroly schválení provedené po spuštění kontrol se nevyzvednou.

Poznámka:

Pokud je skupina určena jako schvalovatel, musí ke spuštění pokračovat jenom jeden uživatel ve skupině.

Odložená schválení

Existují situace, kdy čas, kdy je uděleno schválení, a čas, kdy se má nasazení spustit, neodpovídá. Můžete například chtít počkat na nasazení nové verze až do doby nízkého provozu ve večerních hodinách.

Pokud chcete tento scénář vyřešit, můžete odložit schválení a nastavit čas, kdy bude schválení účinné.

  1. Vyberte Odložit schválení.

    Snímek obrazovky s možností odložit schválení, když odpovíte na žádost o schválení

  2. Nastavte čas schválení.

    Snímek obrazovky s nastavením času schválení

Schválení se zobrazí na panelu Kontroly jako předběžné schválení. Schválení je platné v nastaveném čase.

Ovládací prvek větve

Pomocí kontroly ovládacího prvku větve můžete zajistit, aby všechny prostředky propojené s kanálem byly sestaveny z povolených větví a že větve mají povolenou ochranu. Tato kontrola pomáhá řídit připravenost verzí a kvalitu nasazení. V případě propojení více prostředků s kanálem se ověří zdroj všech prostředků. Pokud jste propojili jiný kanál, ověří se pro ochranu větev konkrétního nasazeného spuštění.

Definování kontroly ovládacího prvku větve:

  1. V projektu Azure DevOps přejděte k prostředku (například prostředí), které je potřeba chránit.

  2. Přejděte na Schválení a Kontroly prostředku.

  3. Zvolte kontrolu ovládacího prvku Větev a zadejte čárkami oddělený seznam povolených větví. Můžete nařídit, aby větev měla mít povolenou ochranu. Můžete také definovat chování kontroly, pokud není známý stav ochrany jedné z větví. Větev se považuje za chráněnou, pokud byla použita alespoň jedna zásada (včetně zásad použitých na úrovni úložiště).

    Konfigurace kontroly řízení větví

V době běhu by kontrola ověřila větve pro všechny propojené prostředky spuštěné na seznamu povolených. Pokud některá z větví neodpovídá kritériím, kontrola selže a fáze se označí jako neúspěšná.

Poznámka:

Kontrola vyžaduje, aby názvy větví byly plně kvalifikované. Ujistěte se, že je formát názvu větve. refs/heads/<branch name>

Pracovní doba

V případě, že chcete, aby všechna nasazení do vašeho prostředí probíhala pouze v určitém časovém intervalu, je ideální řešení pro kontrolu pracovních hodin. Když spustíte kanál, spuštění fáze, která používá prostředek, čeká na pracovní dobu. Pokud máte spuštěných více spuštění současně, je každý z nich nezávisle ověřený. Na začátku pracovní doby se kontrola označí jako úspěšná pro všechna spuštění.

Konfigurace kontroly pracovních hodin

Pokud se provedení fáze neskončilo na konci pracovní doby (drží se až do jiné kontroly), schválení pracovní doby se automaticky odvolá a na další den se naplánuje znovuhodnocení. Kontrola selže, pokud se spuštění fáze nespustí během období časového limitu zadaného pro kontrolu a fáze se označí jako neúspěšná.

Vyvolání funkce Azure

Azure Functions jsou bezserverová výpočetní platforma, kterou nabízí Azure. Pomocí Azure Functions můžete spouštět malé části kódu (označované jako "funkce"), aniž byste se museli starat o infrastrukturu aplikací. Díky vysoké flexibilitě poskytují funkce Azure skvělý způsob, jak vytvářet vlastní kontroly. Zahrnete logiku funkce Azure check-in tak, aby se každé spuštění aktivovalo na požadavku HTTP, má krátkou dobu provádění a vrací odpověď. Při definování kontroly můžete analyzovat tělo odpovědi, abyste mohli zjistit, jestli je kontrola úspěšná. Hodnocení se může pravidelně opakovat pomocí nastavení Čas mezi vyhodnoceními v možnostech řízení. Další informace

Konfigurace kontroly funkce Azure

Pokud kontrola není úspěšná v rámci nakonfigurovaného časového limitu, přidružená fáze se přeskočí. Fáze v závislosti na tom se také přeskočí. Další informace najdete v úloze Aplikace funkcí Azure.

Poznámka:

Uživatelem definované proměnné kanálu jsou přístupné pro kontrolu počínaje sprintem 215.

Přečtěte si další informace o doporučeném způsobu použití volání kontrol funkcí Azure. Kontroly musí dodržovat konkrétní pravidla v závislosti na jejich režimu a počtu opakovaných pokusů, které vyhovují.

Invoke REST API

Vyvolání kontroly rozhraní REST API umožňuje integraci se všemi vašimi stávajícími službami. Pravidelně volejte rozhraní REST API a pokračujte, pokud vrátí úspěšnou odpověď. Další informace

Hodnocení se může pravidelně opakovat pomocí nastavení Čas mezi vyhodnoceními v možnostech řízení. Pokud kontrola není úspěšná v rámci nakonfigurovaného časového limitu, přidružená fáze se přeskočí. Fáze v závislosti na tom se také přeskočí. Další informace najdete v tématu Vyvolání úlohy rozhraní REST API.

Poznámka:

Uživatelem definované proměnné kanálu jsou přístupné pro kontrolu počínaje sprintem 215.

Přečtěte si další informace o doporučeném způsobu použití kontrol rozhraní REST API.

Dotazování upozornění služby Azure Monitor

Azure Monitor nabízí vizualizaci, dotazování, směrování, upozorňování, automatické škálování a automatizaci dat z infrastruktury Azure a jednotlivých prostředků Azure. Výstrahy představují standardní způsob, jak detekovat problémy se stavem infrastruktury nebo aplikace a provádět opravné akce. Kanárské nasazení a fázované zavedení jsou běžné strategie nasazení, které se používají k nižšímu riziku regresí kritických aplikací. Po nasazení do fáze (sady zákazníků) se aplikace sleduje po určitou dobu. Stav aplikace po nasazení se použije k rozhodnutí, jestli se má aktualizace provést v další fázi, nebo ne.

Dotazování upozornění služby Azure Monitor vám pomůže sledovat Službu Azure Monitor a zajistit, aby po nasazení nebyla pro aplikaci vyvolána žádná upozornění. Kontrola proběhne úspěšně, pokud se v době vyhodnocení neaktivují žádná pravidla upozornění. Další informace

Hodnocení se opakuje po nastavení čas mezi nastavením vyhodnocení v možnostech řízení. Kontroly selžou, pokud se fáze nespustila během zadaného časového limitu .

Požadovaná šablona

S požadovanou kontrolou šablony můžete vynutit kanály tak, aby používaly konkrétní šablonu YAML. Pokud je tato kontrola na místě, kanál selže, pokud se nevztahuje z odkazované šablony.

Definování požadovaného schválení šablony:

  1. V projektu Azure DevOps přejděte na připojení služby, které chcete omezit.

  2. V nabídce vedle možnosti Upravit otevřete schválení a kontroly.

  3. V nabídce Přidat první zaškrtnutí vyberte Požadovanou šablonu.

  4. Zadejte podrobnosti o tom, jak se dostat k požadovanému souboru šablony.

    • Typ úložiště: Umístění úložiště (GitHub, Azure nebo Bitbucket).
    • Úložiště: Název úložiště, které obsahuje vaši šablonu.
    • Odkaz: Větev nebo značka požadované šablony.
    • Cesta k požadované šabloně: Název šablony.

Pro stejné připojení služby můžete mít několik požadovaných šablon. V tomto příkladu je production_template.yamlpožadovaná šablona .

Konfigurace požadované kontroly šablony

Zakázání kontroly

Při ladění kontroly můžete chtít dočasně zakázat a pak ji znovu povolit. Zakázání nebo povolení kontroly:

  1. V projektu Azure DevOps přejděte na prostředek se kontrolou.

  2. Otevřete kartu Schválení a Kontroly.

  3. V místní nabídce vyberte Zakázat nebo Povolit.

    Snímek obrazovky s možností zakázání zaškrtnutí

Obejití kontroly

V některých případech, jako je nasazení opravy hotfix, může být nutné obejít kontrolu. Kontrolu můžete obejít jenom v případě, že máte oprávnění správce pro prostředek, ve kterém je kontrola definovaná.

Pokud chcete obejít schvalování, pracovní dobu, vyvolat funkci Azure Nebo vyvolat kontrolu rozhraní REST API, vyberte možnost Obejít kontrolu , když prostředek čeká na kontrolu. Tady je příklad obejití kontroly pracovních hodin.

Snímek obrazovky s možností kontroly vynechat pracovní dobu

Při obejití kontroly uvidíte, kdo šek obešel na kontrolním panelu.

Snímek obrazovky s protokolem vynechané kontroly

Vyhodnocení artefaktu

Artefakty, které se mají nasadit do prostředí, můžete vyhodnotit proti vlastním zásadám.

Poznámka:

V současné době to funguje jenom s artefakty imagí kontejneru.

Pokud chcete definovat vlastní vyhodnocení zásad u artefaktů, postupujte podle následujících kroků.

  1. V projektu Azure DevOps Services přejděte do prostředí, které je potřeba chránit. Přečtěte si další informace o vytváření prostředí.

    Zobrazení prostředí

  2. Přejděte do části Schválení a zkontrolujte prostředí.

    Přidání kontrol do prostředí

  3. Vyberte Vyhodnotit artefakt.

    Přidání kontroly artefaktů vyhodnocení

  4. Vložte definici zásady a vyberte Uložit. Další informace o psaní definic zásad

    Přidejte definici zásady.

Při spuštění kanálu se spuštění tohoto spuštění pozastaví před vstupem do fáze, která používá prostředí. Zadaná zásada se vyhodnocuje s dostupnými metadaty obrázků. Kontrola proběhne, když je zásada úspěšná a jinak selže. Fáze se označí jako neúspěšná, pokud se kontrola nezdaří.

Zobrazení úspěšných kontrol

Zobrazí se také kompletní protokoly kontrol zásad ze zobrazení kanálu.

Zobrazení předaných kontrol protokolů

Exkluzivní zámek

Exkluzivní kontrola uzamčení umožňuje pokračovat pouze jedním spuštěním z kanálu a dá se nastavit na úrovni fáze nebo kanálu. Všechny fáze ve všech spuštěních tohoto kanálu, které používají prostředek, jsou pozastavené. Jakmile se fáze pomocí zámku dokončí, může k použití prostředku pokračovat další fáze. Dále může pokračovat pouze jedna fáze.

Vlastnost lockBehavior určuje, jak ostatní fáze zpracovávají zámky. Když zadáte lockBehavior vlastnost pro fázi, zámek se pro tuto fázi vytvoří automaticky. Existují dvě možné lockBehavior hodnoty:

  • runLatest – Zámek prostředku získá pouze nejnovější spuštění. runLatest je výchozí hodnota, pokud není zadána žádná lockBehavior .
  • sequential – Všechna spuštění získávají zámek chráněnému prostředku postupně.

Pokud chcete použít výhradní kontrolu zámku s nasazeními sequential , nebo runLatestpostupujte takto:

  1. Povolte kontrolu výhradního zámku v prostředí (nebo jiném chráněném prostředku). Možnost výhradního uzamčení je dostupná kontrola.

    Snímek obrazovky s kartou Schválení s výhradní možností uzamčení

  2. V souboru YAML pro kanál zadejte vlastnost s názvem lockBehavior. To je možné zadat pro celý kanál nebo pro danou fázi:

Nastavení ve fázi:

stages:
- stage: A
  lockBehavior: sequential
  jobs:
  - job: Job
    steps:
    - script: Hey!

Nastavte kanál:

lockBehavior: runLatest
stages:
- stage: A
  jobs:
  - job: Job
    steps:
    - script: Hey!

Pokud nezadáte lockBehavior a zámek se nastaví u prostředku, použije se výchozí hodnota runLatest .

Exkluzivní kontrola uzamčení umožňuje pokračovat pouze jedním spuštěním z kanálu. Všechny fáze ve všech spuštěních tohoto kanálu, které používají prostředek, jsou pozastavené. Jakmile se fáze pomocí zámku dokončí, může k použití prostředku pokračovat další fáze. Dále může pokračovat pouze jedna fáze. Všechny ostatní fáze, které se pokusily zámek vzít, budou zrušeny.

Správa změn ServiceNow

Tyto kontroly potřebují , aby se rozšíření ServiceNow Change Management nainstalovalo z marketplace.

Kontrola správy změn servicenow umožňuje integraci procesu správy změn ServiceNow do kanálů. Přidáním kontroly se na začátku fáze automaticky vytvoří nová žádost o změnu ve službě ServiceNow. Kanál čeká na dokončení procesu změny před zahájením fáze. Další podrobnosti jsou dostupné tady.

Více schválení a kontrol

Fáze se může skládat z mnoha úloh a každá úloha může spotřebovávat několik prostředků. Před zahájením provádění fáze musí být splněny všechny kontroly všech prostředků použitých v této fázi. Azure Pipelines pozastaví spuštění kanálu před každou fází a čeká na dokončení všech čekajících kontrol.

Jediné konečné záporné rozhodnutí způsobí, že kanál bude odepřen přístup a fáze selže. Rozhodnutí všech schválení a kontrol s výjimkou vyvolání funkce Azure Nebo rozhraní REST API a výhradního zámku jsou konečná. Můžete znovu spustit úspěšné vyvolání funkce Azure nebo kontroly rozhraní REST API.

Při použití volání funkce Azure nebo rozhraní REST API se doporučuje, že jejich rozhodnutí o přístupu jsou také konečná.

Když zadáte čas mezi vyhodnoceními pro vyvolání funkce Azure nebo kontroly rozhraní REST API, která není nulová, rozhodnutí kontroly není konečné. Tento scénář stojí za to prozkoumat.

Podívejme se na příklad. Představte si, že kanál YAML má fázi, která používá připojení služby. Toto připojení služby má nakonfigurované dvě kontroly:

  1. Asynchronní kontrola s názvem Externí schválení udělená, která ověřuje, že externí schválení je uděleno a je nakonfigurováno doporučeným způsobem.
  2. Synchronní kontrola s názvem Důvod nasazení platná, která ověřuje platnost důvodu nasazení a pro kterou nastavíte čas mezi vyhodnoceními na 7 minut.

Možné spuštění kontrol je znázorněno v následujícím diagramu. Diagram znázorňující časovou osu asynchronních a synchronních kontrol spuštění

V tomto spuštění:

  • Obě kontroly, udělení externího schválení a platnost důvodu nasazení, jsou vyvolány ve stejnou dobu. Důvod nasazení je platný okamžitě, ale protože se čeká na schválení externího schválení , bude se opakovat.
  • V minutě 7 se znovu opakuje platnost důvodu nasazení a tentokrát se projde.
  • Po 15 . minutě externí schválení volá zpět do Azure Pipelines s úspěšným rozhodnutím. Teď obě kontroly projdou, takže kanál může pokračovat v nasazování fáze.

Podívejme se na další příklad, který zahrnuje dvě synchronní kontroly. Předpokládejme, že kanál YAML má fázi, která používá připojení služby. Toto připojení služby má nakonfigurované dvě kontroly:

  1. Synchronní kontrola s názvem Synchronizovat kontrolu 1, pro kterou nastavíte čas mezi vyhodnoceními na 5 minut.
  2. Synchronní kontrola s názvem Synchronizovat kontrolu 2, pro kterou nastavíte čas mezi vyhodnoceními na 7 minut.

Možné spuštění kontrol je znázorněno v následujícím diagramu. Diagram znázorňující časovou osu dvou synchronních kontrol provádění

V tomto spuštění:

  • Obě kontroly, Sync Check 1 a Sync Check 2, jsou vyvolány ve stejnou dobu. Kontrola synchronizace 1 projde, ale opakuje se, protože kontrola synchronizace 2 selže.
  • Po 5 . minutě se kontrola synchronizace 1 opakuje, ale selže, takže se bude opakovat.
  • Po 7 . minutě se kontrola synchronizace 2 zopakuje a proběhne úspěšně. Rozhodnutí o průchodu je platné 7 minut. Pokud synchronizační kontrola 1 nepřejde v tomto časovém intervalu, provede se kontrola synchronizace 2 .
  • Po 10 minutách se kontrola synchronizace 1 opakuje, ale selže, takže se opakuje.
  • Po 14 minutách se kontrola synchronizace 2 zopakuje a proběhne úspěšně. Rozhodnutí o průchodu je platné 7 minut. Pokud synchronizační kontrola 1 nepřejde v tomto časovém intervalu, provede se kontrola synchronizace 2 .
  • Po 15 minutách se kontrola synchronizace 1 zopakuje a proběhne úspěšně. Teď obě kontroly projdou, takže kanál může pokračovat v nasazování fáze.

Podívejme se na příklad, který zahrnuje schválení a synchronní kontrolu. Představte si, že jste nakonfigurovali synchronní kontrolu a schválení připojení služby s časem mezi vyhodnoceními 5 minut. Dokud se schválení nespustí, kontrola se spustí každých 5 minut bez ohledu na rozhodnutí.

Často kladené dotazy

Definované kontroly se nespustí. Co se stalo?

Vyhodnocení kontrol se spustí, jakmile budou splněny podmínky fáze. Spuštění fáze byste měli potvrdit po přidání kontrol do prostředku a využití prostředku ve fázi.

Jak můžu použít kontroly plánování fáze?

Pomocí kontroly pracovní doby můžete řídit čas zahájení provádění fáze. Můžete dosáhnout stejného chování jako předdefinovaný plán ve fázi v verzích návrháře.

Jak můžu předem schválit fázi naplánovanou pro budoucí spuštění?

Tento scénář je možné povolit.

  1. Kontrola pracovní doby umožňuje naplánování spuštění všech fází do prostředku mezi časovým intervalem.
  2. Pokud jsou schválení nakonfigurovaná na stejném prostředku, fáze by před spuštěním čekala na schválení.
  3. Můžete nakonfigurovat obě kontroly prostředku. Fáze by čekala na schválení a pracovní dobu. Po dokončení schválení se spustí v dalším naplánovaném okně.

Můžu počkat na dokončení kontroly zabezpečení nasazeného artefaktu?

Pokud chcete počkat na dokončení kontroly zabezpečení nasazeného artefaktu, budete muset použít externí skenovací službu, jako je AquaScan. Nasazený artefakt by se před zahájením kontrol potřeboval nahrát do umístění přístupného pro skenovací službu a bylo možné ho identifikovat pomocí předdefinovaných proměnných. Pomocí kontroly vyvolat rozhraní REST API můžete přidat kontrolu, která bude čekat na rozhraní API ve službě zabezpečení a předat identifikátor artefaktu jako vstup.

Jak můžu při kontrole použít výstupní proměnné z předchozích fází?

Ve výchozím nastavení jsou pro kontroly k dispozici jen předdefinované proměnné. Propojenou skupinu proměnných můžete použít pro přístup k dalším proměnným. Výstupní proměnná z předchozí fáze může být zapsána do skupiny proměnných a přístupná při kontrole.

Další informace