Doporučení pro použití kontinuální integrace

Platí pro toto doporučení kontrolního seznamu efektivity provozu azure Well-Architected Framework:

OE:04 Optimalizujte procesy vývoje softwaru a zajištění kvality pomocí osvědčených postupů pro vývoj a testování. Pokud chcete mít 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 stylem.

Související příručka: Zlepšení rychlosti | sestaveníStandardizace nástrojů a procesů

Při vývoji, aktualizaci nebo dokonce odebrání kódu mají vývojáři intuitivní a bezpečnou metodu integrace těchto změn do hlavní větve kódu, což vývojářům umožňuje poskytovat hodnotu.

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ískat téměř okamžitou zpětnou vazbu o kvalitě, pokrytí testů a zavedených chybách. Tento proces vám umožní pracovat rychleji a s větší jistotou a menším rizikem.

Kontinuální integrace (CI) je postup, kdy se systémy správy zdrojového kódu a kanály nasazení softwaru integrují za účelem poskytování automatizovaných mechanismů sestavení, testování a zpětné vazby týmům pro vývoj softwaru.

Klíčové strategie návrhu

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

Proces kontinuální integrace začne, když technik vytvoří žádost o přijetí změn GitHubu, která systému CI oznámí, že změny kódu jsou připravené k integraci. V ideálním případě proces integrace ověří kód na základě několika směrných plánů a testů. Následně poskytne žádajícímu techniku zpětnou vazbu o stavu těchto testů.

Pokud základní kontroly a testování proběhne dobře, proces integrace vytvoří a připraví prostředky, které nasadí aktualizovaný software. Mezi tyto prostředky patří kompilovaný 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í:

  • Spouštění automatizovaných testů s kódem za účelem zajištění včasné detekce změn způsobujících chybu.
  • 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í a ujistěte se, že software neobsahuje žádná známá ohrožení zabezpečení.
  • Spusťte akceptační nebo funkční testy, abyste se ujistili, ž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.

Kanály kontinuální integrace

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 software (často hostovaný v cloudu), který poskytuje:

  • Platforma pro spouštění automatizovaných testů.
  • Kontroly dodržování předpisů.
  • Vykazování.
  • 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 tak, aby se při vytvoření žádostí o přijetí změn nebo 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 k žádostem o přijetí změn.

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

Integrace správy zdrojového kódu

Integrace kanálu kontinuální integrace se systémem správy zdrojového kódu je klíčem k rychlému samoobslužnému přispívání kódu.

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

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

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 s odznáček stavu Azure DevOps v úložišti GitHub

Integrace testů

Klíčovým prvkem kontinuální integrace je neustálé sestavování a testování kódu, protože vývojáři přispívají kódem. Testování žádostí o přijetí změn při jejich vytváření poskytuje rychlou zpětnou vazbu, že potvrzení nezaneslo změny způsobující chybu. Výhodou je, že testy v kanálu kontinuální integrace můžou být stejné testy, které se spouštějí 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á oblíbenou testovací architekturu Pythonu ke spouštění testů CI. Tyto testy se nacházejí ve správě zdrojového kódu společně s kódem Pythonu. Výsledky testu se přejdou do souboru s názvemtest-results.xml.
  • Druhá úloha využívá výsledky testů a publikuje je do kanálu Azure DevOps jako integrovanou sestavu.
- 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 zobrazují na portálu Azure DevOps.

Snímek obrazovky s testy kanálu 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 vylepšení testů nebo ke zlepšení změny, která způsobila selhání testů.

Odznáčky výsledků CI

Mnoho vývojářů ukazuje vysokou kvalitu kódu zobrazením odznáčku stavu v úložišti. Následující obrázek ukazuje odznáček Azure Pipelines zobrazený v souboru readme pro opensourcový projekt na GitHubu.

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

Usnadnění Azure

Azure DevOps je kolekce služeb, které vám pomůžou vytvářet postupy pro spolupráci, efektivní a konzistentní vývoj.

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 se zjednodušila nasazení. Můžete vytvářet pracovní postupy, které sestavují a testují každou žádost 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:

Naučte se zobrazovat odznáčky v úložištích:

Kontrolní seznam efektivity provozu