Kontinuální integrace a průběžné nasazování s Azure DevOps

Poznámka

Tato část podrobně popisuje průběžnou integraci a nasazování pomocí Azure DevOps. Toho můžete dosáhnout také GitHub Akce. GitHub Akce jsou modul pracovních postupů integrovaný GitHub který lze použít také pro kontinuální integraci a nasazování. Pokud chcete postupovat podle průvodce sestavením a nasazením do Azure pomocí GitHub, dokončete oddíl Publikování kódu aplikace pro GitHub a Odpojení místního nasazení Gitu níže a pak pokračujte částí GitHub Actions.

V předchozí kapitole jste vytvořili místní úložiště Git pro aplikaci Simple Feed Reader. V této kapitole tento kód publikujete do úložiště GitHub a pomocí Azure DevOps Services sestavíte Azure Pipelines. Kanál umožňuje průběžná sestavení a nasazování aplikace. Jakékoli potvrzení do GitHub aktivuje sestavení a nasazení do pracovního slotu webové aplikace Azure.

V této části dokončíte následující úlohy:

  • Publikování kódu aplikace pro GitHub
  • Odpojení místního nasazení Gitu
  • Vytvoření organizace Azure DevOps
  • Vytvoření týmového projektu v Azure DevOps organizaci
  • V případě potřeby nakonfigurujte agenta v vlastním hostování.
  • Vytvoření definice sestavení
  • Vytvoření kanálu verze
  • Potvrzení změn na GitHubu a automatické nasazení do Azure
  • Prozkoumání Azure Pipelines kanálu

Publikování kódu aplikace pro GitHub

  1. Otevřete okno prohlížeče a přejděte na https://github.com .

  2. Klikněte na + rozevírací seznam v záhlaví a vyberte Nové úložiště:

    GitHub Možnost New Repository (Nové úložiště)

  3. V rozevíracím seznamu Vlastník vyberte svůj účet a do textového pole Název úložiště zadejte simple-feed-reader.

  4. Klikněte na tlačítko Create repository (Vytvořit úložiště).

  5. Otevřete příkazové prostředí místního počítače. Přejděte do adresáře, ve kterém je uložené úložiště Git simple-feed-reader.

  6. Přejmenujte existující vzdálené zdroje na upstream. Spusťte následující příkaz:

    git remote rename origin upstream
    
  7. Přidejte nový vzdálený zdroj odkazující na kopii úložiště na GitHub. Spusťte následující příkaz:

    git remote add origin https://github.com/<GitHub_username>/simple-feed-reader/
    
  8. Publikujte místní úložiště Git do nově vytvořeného GitHub úložiště. Spusťte následující příkaz:

    git push -u origin main
    
  9. Otevřete okno prohlížeče a přejděte na https://github.com/<GitHub_username>/simple-feed-reader/ . Ověřte, že se váš kód zobrazí v GitHub úložišti.

Odpojení místního nasazení Gitu

Pomocí následujících kroků odeberte místní nasazení Gitu. Azure Pipelines (Azure DevOps) nahrazuje a rozšířené funkce.

  1. Otevřete Azure Portala přejděte do pracovní webové aplikace (mywebapp <unique_number> /staging). Webovou aplikaci můžete rychle najít tak, že do vyhledávacího pole portálu zadáte staging:

    pracovní hledaný termín webové aplikace

  2. Klikněte na Deployment Center. Zobrazí se nový panel. Kliknutím na Odpojit odeberte místní konfiguraci správy zdrojového kódu Git, která byla přidána v předchozí kapitole. Potvrďte operaci odebrání kliknutím na tlačítko Ano.

  3. Přejděte na stránku mywebapp<unique_number> App Service. Připomínáme, že vyhledávací pole portálu můžete použít k rychlému vyhledání App Service.

  4. Klikněte na Deployment Center. Zobrazí se nový panel. Kliknutím na Odpojit odeberte místní konfiguraci správy zdrojového kódu Git, která byla přidána v předchozí kapitole. Potvrďte operaci odebrání kliknutím na tlačítko Ano.

Vytvoření organizace Azure DevOps

  1. Otevřete prohlížeč a přejděte na stránku Azure DevOps organizace.
  2. Vyberte Nová organizace.
  3. Potvrďte informace a pak vyberte Pokračovat.
  4. Kdykoli se přihlaste ke své organizaci. https://dev.azure.com/{yourorganization}

Vytvoření týmového projektu v Azure DevOps organizaci

  1. Zvolte organizaci a pak vyberte Nový projekt.
  2. Jako Název projektu zadejte MyFirstProject a vyberte Viditelnost jako Privátní.
  3. Vyberte Vytvořit projekt.

Další informace najdete v tématu Vytvoření projektu.

V případě potřeby nakonfigurujte agenta v vlastním hostování.

K vytvoření kódu nebo nasazení softwaru pomocí Azure Pipelines potřebujete alespoň jednoho agenta. V Azure Pipelines můžete spouštět paralelní úlohy na agentech hostovaných Microsoftem nebo v jejich vlastním hostování. Ale vzhledem k nedávné změně Azure Pipelines udělení paralelních úloh je pro veřejné projekty dočasně zakažte. Další podrobnosti najdete v tématu Konfigurace a platba za paralelní úlohy.

Přejděte na Organization Nastavení a potom Pipelines > Parallel. Pokud se v části Hostovaný Microsoftem zobrazí hodnota 0, znamená to, že ke spuštění kanálu potřebujete agenta v vlastním hostování.

Agent hostovaný v MS

Můžete ho vytvořit podle podrobností uvedených v tématu Agenti v vlastním prostředí. Po úspěšné konfiguraci se v části Organization Nastavení > Agent pools > {youragentname} zobrazí dostupný agent.

Agent v vlastním hostování

Konfigurace Azure Pipelines kanálu

Existují tři různé kroky, které je dobré provést. Dokončením kroků v následujících třech částech se zprovozní DevOps kanálu.

Udělení Azure DevOps přístupu k úložišti GitHub úložiště

  1. V projektu přejděte na Pipelines stránky. Pak zvolte akci pro vytvoření nového kanálu:

    Tlačítko Nastavit sestavení

  2. K Use the classic editor vytvoření kanálu použijte .

    Použití klasického editoru

  3. V GitHub zdroj vyberte možnost Volby zdroje::

    Výběr zdroje – GitHub

  4. Autorizace se vyžaduje, aby Azure DevOps mohli přistupovat k vašemu GitHub úložiště. Do <GitHub_username> GitHub Connection name (Název připojení) zadejte connection connection (Název připojení). Například:

    GitHub názvu připojení

  5. Pokud je ve vašem účtu GitHub povolené dvoufaktorové ověřování, vyžaduje se osobní přístupový token. V takovém případě klikněte na odkaz Authorize with a GitHub osobní přístupový token. Nápovědu najdete v GitHub pokyny k vytvoření tokenu PERSONAL. Je potřeba jenom obor oprávnění k repo. Jinak klikněte na tlačítko Authorize using OAuth (Autorizovat pomocí OAuth).

  6. Po zobrazení výzvy se přihlaste ke svému GitHub účtu. Pak vyberte Autorizovat a udělte přístup Azure DevOps organizaci. V případě úspěchu se vytvoří nový koncový bod služby.

  7. Klikněte na tlačítko se třemi tečkami vedle tlačítka Úložiště. V <GitHub_username>vyberte úložiště /simple-feed-reader. Klikněte na tlačítko Vybrat.

  8. Vyberte výchozí větev (hlavní) z rozevíracího seznamu Výchozí větev pro ruční a plánovaná sestavení. Klikněte na tlačítko Pokračovat. Zobrazí se stránka pro výběr šablony.

Vytvoření definice sestavení

  1. Na stránce pro výběr šablony zadejte ASP.NET Core do vyhledávacího pole:

    ASP.NET Core hledání na stránce šablony

  2. Zobrazí se výsledky hledání šablony. Najeďte myší ASP.NET Core šablony a klikněte na tlačítko Použít.

  3. Zobrazí se karta Úlohy definice sestavení. Vyberte fond agentů v vlastním hostování, pokud jste ho vytvořili v předchozím kroku.

    Vyberte Fond agentů v vlastním hostování.

    Poznámka

    Pokud používáte agenta hostovaného microsoftem, vyberte z rozevíracího > Azure Pipelines hostovaného agenta.

  4. Klikněte na kartu Triggery.

  5. Zaškrtněte políčko Povolit kontinuální integraci. V části Filtry větví zkontrolujte, že je rozevírací seznam Typ nastavený na Zahrnout. V rozevíracím seznamu Specifikace větve nastavte hlavní .

    Povolení nastavení průběžné integrace

    Tato nastavení způsobí, že se sestavení aktivuje, když se jakákoli změna nasoudí do výchozí větve (hlavní) GitHub úložiště. Průběžná integrace se testuje v části Potvrzení změn GitHub a automatické nasazení do Azure.

  6. Klikněte na tlačítko & fronty a vyberte možnost Uložit:

    Tlačítko Uložit

  7. Zobrazí se následující modální dialogové okno:

    Uložení definice sestavení – modální dialogové okno

    Použijte výchozí složku a \ klikněte na tlačítko Uložit.

Vytvoření kanálu verze

  1. Klikněte na kartu Releases (Verze) vašeho týmového projektu. Klikněte na tlačítko Nový kanál.

    Karta Vydání – tlačítko Nová definice

    Zobrazí se podokno výběru šablony.

  2. Na stránce pro výběr šablony zadejte App Service do vyhledávacího pole Nasazení:

    Vyhledávací pole šablony kanálu verze

  3. Zobrazí se výsledky hledání šablony. Najeďte myší Azure App Service nasazení se šablonou slotu a klikněte na tlačítko Použít. Zobrazí se karta Kanál kanálu verze.

    Karta Kanál kanálu verze

  4. Klikněte na tlačítko Přidat v Artifacts pole. Zobrazí se panel Přidat artefakt:

    Kanál verze – panel Přidat artefakt

  5. V části Typ zdroje vyberte dlaždici Sestavení. Tento typ umožňuje propojení kanálu verze s definicí sestavení.

  6. V rozevíracím seznamu Project MyFirstProject.

  7. V rozevíracím seznamu Zdroj (definice sestavení) vyberte název definice sestavení MyFirstProject-ASP.NET Core-CI.

  8. V rozevíracím seznamu Výchozí verze vyberte Nejnovější. Tato možnost sestaví artefakty vytvořené nejnovějším spuštěním definice sestavení.

  9. Nahraďte text v textovém poli Alias zdroje za Drop.

  10. Klikněte na tlačítko Přidat. Oddíl Artifacts se aktualizuje a zobrazí změny.

  11. Kliknutím na ikonu blesku povolíte průběžné nasazování:

    Aktualizace kanálu Artifacts – ikona blesku

    Když je tato možnost povolená, nasazení nastane pokaždé, když je k dispozici nové sestavení.

  12. Napravo se zobrazí panel Trigger průběžného nasazování. Kliknutím na přepínací tlačítko funkci povolte. Není nutné povolovat trigger žádosti o změnu.

  13. V části Filtry větví sestavení klikněte na rozevírací seznam Přidat. Zvolte výchozí větev definice sestavení. Tento filtr způsobí, že se verze aktivuje jenom pro sestavení GitHub výchozí větvi úložiště (hlavní).

  14. Klikněte na tlačítko Uložit. Ve výsledném modálním dialogovém okně Uložit klikněte na tlačítko OK.

  15. Klikněte na pole Fáze 1. Napravo se zobrazí panel Fáze. Změňte text Fáze 1 v textovém poli Název fáze na Production.

    Textové pole Kanál verze – název fáze

  16. Klikněte na odkaz 1 fáze, 2 úkoly v poli Production (Produkční):

    Kanál verze – produkční prostředí link.png

    Zobrazí se karta Úlohy prostředí.

  17. Klikněte na úlohu Azure App Service do slotu. Jeho nastavení se zobrazí na panelu napravo.

  18. V rozevíracím seznamu předplatného Azure App Service předplatného Azure přidružené k příslušnému předplatnému. Po výběru klikněte na tlačítko Autorizovat.

  19. V rozevíracím seznamu Typ aplikace vyberte Webová aplikace.

  20. V rozevíracím seznamu <unique_number app service >mywebapp/>/.

  21. V rozevíracím seznamu Skupina prostředků vyberte AzureTutorial.

  22. V rozevíracím seznamu Slot vyberte pracovní.

  23. V části _Úlohy* vyberte Spustit v agentovi. V pravém podokně se zobrazí Agent Job (Úloha agenta).

  24. Vyberte fond agentů v vlastním hostování, pokud jste ho vytvořili v předchozím kroku.

    Vyberte Agenta v vlastním hostování.

    Poznámka

    Pokud používáte agenta hostovaného microsoftem, vyberte z rozevíracího > Azure Pipelines hostovaného agenta.

  25. Klikněte na tlačítko Uložit.

  26. Najeďte myší na výchozí název kanálu verze. Klikněte na ikonu tužky a upravte ji. Jako název použijte MyFirstProject-ASP.NET Core-CD.

    Název kanálu verze

  27. Klikněte na tlačítko Uložit.

Potvrzení změn na GitHubu a automatické nasazení do Azure

  1. Otevřete soubor SimpleFeedReader.sln v Visual Studio.

  2. V Průzkumník řešení otevřete Pages\Index.cshtml. Změňte <h2>Simple Feed Reader - V3</h2> na <h2>Simple Feed Reader - V4</h2> .

  3. Stisknutím kláves Ctrl + Shift + B sestavte aplikaci.

  4. Potvrďte soubor do GitHub úložiště. Použijte buď stránku Změny Visual Studio kartě Team Explorer, nebo spusťte následující příkaz v příkazovém prostředí místního počítače:

    git commit -a -m "upgraded to V4"
    
  5. Napište změnu ve výchozí větvi (hlavní) do původního vzdáleného úložiště GitHub úložiště. V následujícím příkazu nahraďte zástupný symbol {BRANCH} výchozí větví (použijte main ):

    git push origin {BRANCH}
    

    Potvrzení se zobrazí ve GitHub větvi úložiště (main). Historii potvrzení uvidíte v https://github.com/<GitHub_username>/simple-feed-reader/commits/main .

    Sestavení se aktivuje, protože kontinuální integrace je povolená na kartě Triggery definice sestavení:

    povolení kontinuální integrace

  6. Přejděte na Pipelines. Uvidíte podrobnosti o kanálu CI a budete monitorovat jednotlivé kroky, když budete procházet podrobnosti o úlohách.

    Aktivace kanálu buildu

  7. Podobně přejděte na kartu Releases (Verze) a zobrazte podrobnosti o kanálu CD. Vždy můžete přejít k podrobnostem a zobrazit další podrobnosti o jednotlivých stupních.

    Kanál verze

  8. Po úspěšném sestavení dojde k nasazení do Azure. V prohlížeči přejděte k aplikaci. Všimněte si, že se v záhlaví zobrazí text "V4":

    aktualizovaná aplikace

Prozkoumání Azure Pipelines kanálu

Definice sestavení

Byla vytvořena definice sestavení s názvem MyFirstProject-ASP.NET Core-CI. Po dokončení sestavení vytvoří soubor .zip včetně prostředků, které se mají publikovat. Kanál verze nasadí tyto prostředky do Azure.

Karta Úlohy definice sestavení obsahuje seznam jednotlivých použitých kroků. Existuje pět úloh sestavení.

úlohy definice sestavení

  1. Obnovení — Spustí příkaz dotnet restore k obnovení balíčků NuGet aplikace. Výchozí informační kanál balíčků je nuget.org.

  2. Sestavení — Spustí příkaz dotnet build --configuration release ke kompilaci kódu aplikace. Tato možnost se používá k vytvoření optimalizované verze kódu, která je vhodná pro --configuration nasazení do produkčního prostředí. Pokud je například potřeba konfigurace ladění, upravte proměnnou BuildConfiguration na kartě Variables (Proměnné) definice sestavení.

  3. Test — Spustí příkaz ke spuštění testů jednotek dotnet test --configuration release --logger trx --results-directory <local_path_on_build_agent> aplikace. Testy jednotek se provádějí v rámci libovolného projektu C# odpovídající vzoru globu **_/_Tests/.csproj. Výsledky testu se ukládají do souboru .trx v umístění určeném --results-directory parametrem . Pokud nějaké testy selžou, sestavení selže a nebude nasazeno.

    Poznámka

    Pokud chcete ověřit, že testy jednotek fungují, upravte SimpleFeedReader.Tests\Services\NewsServiceTests.cs tak, aby záměrně přerušily jeden z testů. Například v Assert.True(result.Count > 0); metodě Assert.False(result.Count > 0); změňte na Returns_News_Stories_Given_Valid_Uri . Potvrďte změnu a nasa GitHub. Sestavení se aktivuje a selže. Stav kanálu buildu se změní na neúspěšný. Vrátte změnu, potvrďte ji a znovu nasuřte. Sestavení bude úspěšné.

  4. Publikování — Spustí příkaz dotnet publish --configuration release --output <local_path_on_build_agent> pro vytvoření souboru .zip s artefakty, které se mají nasadit. Možnost --output určuje umístění publikování souboru .zip souboru. Toto umístění je určeno předáním předdefinované proměnné s názvem $(build.artifactstagingdirectory) . Tato proměnná se v agentovi sestavení rozbalí do místní cesty, například c:\agent _ work\1\a.

  5. Publikování artefaktu — Publikuje soubor .zip vytvořený úlohou Publikovat. Úloha přijímá umístění .zip jako parametr, což je předdefinovaná proměnná $(build.artifactstagingdirectory) . Soubor .zip publikovaný jako složka s názvem drop.

Kliknutím na odkaz Souhrn definice sestavení zobrazíte historii sestavení s definicí:

Snímek obrazovky s historií definic sestavení

Na výsledné stránce kliknutím na jednotlivé sestavení zobrazíte další podrobnosti.

Snímek obrazovky zobrazující stránku se souhrnem definice sestavení

Zobrazí se souhrn tohoto konkrétního sestavení. Klikněte na publikovaný odkaz a všimněte si, že je uvedená složka drop vytvořená sestavením:

Snímek obrazovky znázorňující artefakty definice sestavení – drop folder

Sestavení Artifacts

Použijte tři tečky a kliknutím na odkazy Stažené artefakty zkontrolujte publikované artefakty.

Kanál verze

Vytvořil se kanál verze s názvem MyFirstProject-ASP.NET Core-CD:

Snímek obrazovky s přehledem kanálu verze

Dvěma hlavními komponentami kanálu verze jsou Artifacts a Fáze. Kliknutím na pole v Artifacts se zobrazí následující panel:

Snímek obrazovky znázorňující artefakty kanálu verze

Hodnota Zdroj (definice sestavení) představuje definici sestavení, se kterou je tento kanál verze propojený. Soubor .zip vytvořený úspěšným spuštěním definice sestavení je poskytován produkčnímu prostředí pro nasazení do Azure. Kliknutím na odkaz 1 fáze, 2 úkoly v poli Produkční prostředí zobrazíte úlohy kanálu verze:

Snímek obrazovky znázorňující úlohy kanálu verze

Kanál verze se skládá ze dvou úloh: nasazení Azure App Service slotu a správy Azure App Service – prohození slotů. Kliknutím na první úlohu zobrazíte následující konfiguraci úlohy:

Snímek obrazovky znázorňující úlohy kanálu verze

V úkolu nasazení se definuje předplatné Azure, typ služby, název webové aplikace, skupina prostředků a slot nasazení. Textové pole Balíček nebo složka obsahuje cestu .zip, která se má extrahovat a nasadit do pracovního slotu webové aplikace <unique_number> mywebapp.

Kliknutím na úlohu prohození slotů zobrazíte následující konfiguraci úlohy:

Snímek obrazovky znázorňující úlohu prohození slotů kanálu verze

K dispozici jsou podrobnosti o předplatném, skupině prostředků, typu služby, názvu webové aplikace a slotu nasazení. Je zaškrtnuté políčko Prohodit s produkčním prostředím. V důsledku toho se bity nasazené do pracovního slotu prohodí do produkčního prostředí.

Další materiály ke čtení