Doporučení pro používání kontinuální integrace

Platí pro toto doporučení kontrolního seznamu provozní efektivity architektury Azure Well-Architected Framework:

OE:04 Optimalizujte procesy vývoje softwaru a kontroly kvality pomocí osvědčených postupů pro vývoj a testování. Pro jasné označení rolí standardizujte postupy napříč komponentami, jako jsou nástroje, správa zdrojového kódu, vzory návrhu aplikací, dokumentace a průvodci styly.

Související průvodce: Zlepšení rychlosti | sestavování Standardizace nástrojů a procesů

S vývojem, aktualizací nebo odebráním kódu umožňuje vývojářům poskytnout hodnotu intuitivní a bezpečnou metodu integrace těchto změn do hlavní větve kódu.

Jako vývojář můžete provádět malé změny kódu, odesílat tyto změny do úložiště kódu a získávat téměř okamžitou zpětnou vazbu o kvalitě, pokrytí testů a zavedených chybách. Tento proces umožňuje pracovat rychleji a s větší jistotou a menším rizikem.

Kontinuální integrace (CI) je postup, kdy jsou systémy správy zdrojového kódu a kanály nasazení softwaru integrované, aby poskytovaly automatizované mechanismy sestavování, testování a zpětné vazby pro týmy pro vývoj softwaru.

Klíčové strategie návrhu

Kontinuální integrace je postup vývoje softwaru, který vývojáři používají k integraci aktualizací softwaru do systému správy zdrojového kódu v pravidelných intervalech.

Proces kontinuální integrace začíná, když technik vytvoří žádost o přijetí změn GitHubu, která signaluje systému CI, že změny kódu jsou připravené k integraci. V ideálním případě proces integrace ověří kód proti několika standardním hodnotám a testům. Potom poskytne zpětnou vazbu žadateli o stav těchto testů.

Pokud se provedou základní kontroly a testování, proces integrace vytvoří a připraví prostředky, které nasadí aktualizovaný software. Mezi tyto prostředky patří zkompilovaný kód a image kontejnerů.

Kontinuální integrace vám může pomoct rychleji dodávat vysoce kvalitní software provedením následujících akcí:

  • Spusťte automatizované testy s kódem, abyste mohli včas detekovat zásadní změny.
  • Spusťte analýzu kódu, abyste zajistili standardy, kvalitu a konfiguraci kódu.
  • Spusťte kontroly dodržování předpisů a zabezpečení, abyste zajistili, že software neobsahuje žádná známá ohrožení zabezpečení.
  • Spusťte akceptační nebo funkční testy, abyste zajistili, že software funguje podle očekávání.
  • Poskytněte rychlou zpětnou vazbu ke zjištěným problémům.
  • Pokud je to možné, vytvořte nasaditelné prostředky nebo balíčky, které obsahují aktualizovaný kód.

Automatizace kontinuální integrace s využitím kanálů

Pokud chcete dosáhnout kontinuální integrace, použijte softwarová řešení ke správě, integraci a automatizaci procesu. Běžným postupem je použití kanálu kontinuální integrace.

Kanál kontinuální integrace zahrnuje část softwaru (často hostovaného v cloudu), která poskytuje:

  • Platforma pro spouštění automatizovaných testů.
  • Kontroly dodržování předpisů
  • Hlášení.
  • Všechny ostatní komponenty, které tvoří proces kontinuální integrace.

Ve většině případů je software kanálu připojený ke správě zdrojového kódu, aby se při vytváření žádostí o přijetí změn nebo při sloučení softwaru do konkrétní větve spustil kanál kontinuální integrace. Integrace správy zdrojového kódu také poskytuje možnost poskytnout zpětnou vazbu CI přímo na žádosti o přijetí změn.

Mnoho řešení, jako je Azure Pipelines nebo GitHub Actions, poskytuje možnosti kanálů kontinuální integrace.

Integrace kanálů se správou zdrojového kódu

Integrace kanálu kontinuální integrace se systémem správy zdrojového kódu je klíčem k tomu, aby umožňovala rychlé a samoobslužné příspěvky kódu.

Kanál CI běží na nově vytvořené žádosti o přijetí změn. Kanál zahrnuje všechny testy, posouzení zabezpečení a další kontroly. Výsledky testů CI se zobrazují přímo v žádosti o přijetí změn, aby bylo možné získat téměř v reálném čase zpětnou vazbu k kvalitě.

Dalším oblíbeným postupem je vytváření malých sestav nebo odznáků, které lze prezentovat ve správě zdrojového kódu, aby byly aktuální stavy sestavení viditelné.

Následující obrázek znázorňuje integraci mezi GitHubem a kanálem Azure DevOps. V tomto příkladu vytvoření žádosti o přijetí změn aktivuje kanál Azure DevOps. Stav kanálu se zobrazí v žádosti o přijetí změn.

Snímek obrazovky se stavem Azure DevOps v úložišti GitHub

Začlenění automatizovaných testů

Klíčovým prvkem kontinuální integrace je neustálé sestavování a testování kódu, protože vývojáři vytvářejí příspěvky kódu. Testování žádostí o přijetí změn při jejich vytváření poskytuje rychlou zpětnou vazbu, že potvrzení nezaneslo zásadní změny. Výhodou je, že testy v kanálu kontinuální integrace můžou být stejné testy, které běží během vývoje řízeného testy.

Následující fragment kódu ukazuje testovací krok z kanálu Azure DevOps. Krok má dva úkoly:

  • První úloha používá k spouštění testů CI oblíbenou testovací architekturu Pythonu. Tyto testy se nacházejí ve správě zdrojového kódu spolu s kódem Pythonu. Výsledky testu se přejdou na soubor s názvem test-results.xml.
  • Druhá úloha využívá výsledky testu a publikuje je do kanálu Azure DevOps jako integrované sestavy.
- script: |
    pip3 install pytest
    pytest azure-vote/azure-vote/tests/ --junitxml=junit/test-results.xml
    continueOnError: true

- task: PublishTestResults@2
    displayName: 'Publish Test Results'
    inputs:
    testResultsFormat: 'JUnit'
    testResultsFiles: '**/test-results.xml'
    failTaskOnFailedTests: true
    testRunTitle: 'Python $(python.version)'

Následující obrázek ukazuje výsledky testů, které se zobrazí na portálu Azure DevOps.

Snímek obrazovky s testy kanálů Azure DevOps na portálu Azure DevOps

Neúspěšné testy

Neúspěšné testy by měly dočasně blokovat nasazení a vést k hlubší analýze toho, co se stalo. Neúspěšné testy by také měly vést k upřesnění testů nebo ke zlepšení změny, která způsobila selhání testů.

Publikování stavu sestavení

Mnoho vývojářů ukazuje, že kvalita kódu je vysoká tím, že v úložišti zobrazí odznáček stavu. Následující obrázek ukazuje odznáček Azure Pipelines zobrazený v souboru readme pro opensourcový projekt na GitHubu.

Snímek obrazovky s odznáček Azure Pipelines v souboru readme na GitHubu

Usnadnění azure

Azure DevOps je kolekce služeb, které vám pomůžou vytvořit efektivní a konzistentní vývojový postup pro spolupráci.

Azure Pipelines poskytuje služby sestavení a vydávání, které podporují kontinuální integraci a průběžné doručování (CI/CD) vašich aplikací.

GitHub for Actions pro Azure umožňuje automatizaci procesů CI/CD. Integruje se přímo s Azure, aby zjednodušila nasazení. Můžete vytvářet pracovní postupy, které sestavují a testují všechny žádosti o přijetí změn ve vašem úložišti nebo nasazují sloučené žádosti o přijetí změn do produkčního prostředí.

Zjistěte, jak vytvořit kanál kontinuální integrace pomocí GitHubu nebo Azure DevOps:

Zjistěte, jak v úložištích zobrazovat odznáky:

Kontrolní seznam pro efektivitu provozu