Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Když je kód vyvíjen, aktualizován nebo dokonce odstraněn, intuitivní a bezpečná metoda integrace těchto změn do hlavní větve kódu umožňuje vývojářům přinášet hodnotu.
Jako vývojář můžete provádět malé změny kódu, vkládat tyto změny do úložiště kódu a získat téměř okamžitou zpětnou vazbu o kvalitě, pokrytí testů a vzniklých chybách. Tento proces vám umožní pracovat rychleji, 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.
Proces kontinuální integrace začíná, když technik vytvoří žádost o přijetí změn v GitHubu, aby signalizoval systému CI, že změny kódu jsou připraveny k integraci. V ideálním případě proces integrace ověřuje kód podle několika směrných plánů a testů. Poté poskytne žádajícímu inženýrovi zpětnou vazbu o stavu těchto testů.
Pokud se provedou základní kontroly a testování, proces integrace vytvoří a připraví prostředky, které nasadí aktualizovaný software. Tyto prostředky zahrnují kompilovaný kód a obrazy kontejnerů.
Kontinuální integrace vám může pomoci rychleji dodávat vysoce kvalitní software provedením následujících akcí:
- Spuštění automatických testů kódu pro zajištění včasné detekce změn způsobujících chybu.
- Spuštění analýzy kódu pro zajištění standardů, kvality a konfigurace 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í.
- Spuštění testů přijetí a funkčnosti pro zajištění, že software funguje podle očekávání.
- Poskytnutí rychlé zpětné vazby o zjištěných problémech.
- Kde je to možné, vytvořte nasaditelné prostředky nebo balíčky, které obsahují aktualizovaný kód.
Terminologie
Než začnete s implementací kontinuální integrace, seznamte se s těmito klíčovými termíny.
| Term | definice |
|---|---|
| artefakt | Nasaditelný výstup z procesu sestavení, jako je zkompilovaný kód, image kontejneru nebo balíčky nasazení. |
| Automatizovaný test | Test, který se spouští automaticky jako součást kanálu CI za účelem ověření kvality kódu a zjišťování problémů bez ručního zásahu. |
| Sestavit | Proces, který kompiluje zdrojový kód, spouští testy a vytváří artefakty pro nasazení. |
| Agent sestavení | Výpočetní prostředek hostovaný v místním prostředí nebo v cloudu, který spouští úlohy a operace v rámci kanálu CI. |
| kontinuální integrace (CI) | Postup, který integruje systémy správy zdrojového kódu s automatizovanými kanály pro automatické sestavování, testování a ověřování změn kódu. |
| Kanál CI | Automatizovaný pracovní postup, který sestaví, testuje a ověřuje změny kódu, když se vývojáři potvrdí do správy zdrojového kódu. |
| Integrační test | Test, který ověřuje, jak různé komponenty nebo služby spolupracují, často komplexnější než testy jednotek. |
| Noční sestavení | Naplánované sestavení, které se spouští v pravidelných intervalech (obvykle přes noc) pro spouštění delších testovacích sad, jako jsou integrace a testy uživatelského rozhraní. |
| Žádost o přijetí změn | Žádost o sloučení změn kódu z jedné větve do druhé. Aktivuje kanál CI, aby před integrací ověřil navrhované změny. |
| Publikovaná verze | Přehledné sestavení, které obsahuje kompilaci, testování, dokumentaci, reporty o dodržování předpisů a podepisování. Vytvoří konečnou verzi pro produkční nasazení. |
| Správa zdrojového kódu | Systém, který sleduje a spravuje změny kódu v průběhu času. Mezi příklady patří Git, Azure Repos a GitHub. |
| Odznáček stavu | Vizuální indikátor (obvykle obrázek), který zobrazuje aktuální stav sestavení nebo testů, často zobrazený v dokumentaci k úložišti. |
| Vývoj řízený testy (TDD) | Vývojový postup, ve kterém vývojáři zapisují testy předtím, než zapíší kód, který tyto testy splňuje. |
| Jednotkový test | Test, který ověřuje jednotlivé funkce nebo komponenty izolovaně, aby se zajistilo, že se chovají podle očekávání. |
Automatizace kontinuální integrace s využitím pipelines
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ů
- Reportování.
- Všechny ostatní komponenty, které tvoří proces kontinuální integrace.
Ve většině případů je pipeline software připojený ke správě zdrojového kódu tak, že když jsou vytvořeny pull requesty nebo je software sloučen do konkrétní větve, spustí se pipeline kontinuální integrace. Integrace správy zdrojového kódu také poskytuje příležitost poskytnout zpětnou vazbu CI přímo na žádosti o přijetí změn.
Mnoho řešení, jako jsou 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 s vaším systémem správy zdrojového kódu je klíčem k rychlému a samoobslužnému vkládání kódu.
Pipelina CI běží při nově vytvořeném pull requestu. Datový tok zahrnuje všechny testy, bezpečnostní posouzení a další kontroly. Výsledky testu CI se objeví přímo v žádosti o přijetí změn, což umožňuje téměř v reálném čase zpětnou vazbu ohledně kvality.
Dalším oblíbeným postupem je vytváření malých sestav nebo odznaků, které lze použít ve správě zdrojového kódu, aby zvýraznily aktuální stavy sestavení.
Následující obrázek ukazuje integraci mezi GitHubem a kanálem Azure DevOps. V tomto příkladu vytvoření pull requestu spouští pipelinu Azure DevOps. Stav vývojové linie se zobrazí v pull requestu.
Začlenění automatizovaných testů
Klíčovým prvkem kontinuální integrace je neustálé vytváření a testování kódu, jak jím vývojáři přispívají. Testování pull requestů při jejich vytváření poskytuje rychlou zpětnou vazbu, že potvrzení nezpůsobilo narušení funkčnosti. Výhodou je, že testy v kanálu kontinuální integrace mohou být stejné jako testy, které jsou prováděny během testováním řízeného vývoje.
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 přejdou na soubor s názvem test-results.xml.
- Druhá úloha využívá výsledky testu a jako integrovanou zprávu je zveřejní do kanálu Azure DevOps.
- 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.
Neúspěšné testy
Neúspěšné testy by měly dočasně zablokovat nasazení a vést k hlubší analýze toho, co se stalo. Neúspěšné testy by také měly vést buď ke zpřesnění testů, nebo ke zlepšení změny, která způsobila selhání testů.
Zveřejnit stav 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.
Optimalizace časů sestavení
Pokud chcete provádět rychlejší sestavení, můžete:
Zvolte počítače, které splňují vaše požadavky na výkon: Urychlíte sestavení volbou správných počítačů pro sestavení. Rychlé počítače můžou mít rozdíl mezi hodinami a minutami. Pokud jsou vaše kanály ve službě Azure Pipelines, můžete úlohy spouštět pomocí agenta hostovaného Microsoftem. Při používání agentů hostovaných Microsoftem se o údržbu a upgrady postaráme za vás. Další informace najdete v tématu Agenti hostovaní Microsoftem.
Optimalizujte umístění buildového serveru: Při sestavování kódu se data odesílají přes drát. Vstupy do sestavení se načítají z úložiště správy zdrojového kódu a úložiště artefaktů. Výstup z procesu sestavení je potřeba zkopírovat, včetně zkompilovaných artefaktů, zpráv o testech, výsledků pokrytí kódu a ladicích symbolů. Je důležité, aby se tyto akce kopírování spouštěly rychle. Pokud používáte vlastní buildový server, ujistěte se, že se buildový server nachází poblíž zdrojů a cílového umístění. Rychlé nahrávání a stahování může zkrátit celkovou dobu sestavení.
Horizontální navýšení kapacity buildovacích serverů: Pro malý produkt může stačit jeden buildovací server. S tím, jak se velikost a rozsah produktu a počet týmů pracujících na produktu zvyšuje, nemusí být jeden server dostatečný. Škálujte infrastrukturu horizontálně na více počítačů, jakmile dosáhnete limitu. Další informace najdete v tématu Vytváření a správa fondů agentů.
Optimalizace sestavení:
Přidejte paralelní úlohy, které urychlují proces sestavení. Další informace najdete v tématu Konfigurace a platba za paralelní úlohy.
Povolte paralelní běhy sady testů, které často šetří velké množství času, zejména při spouštění integračních testů a testů uživatelského rozhraní. Další informace najdete v tématu Paralelní spouštění testů pro všechny spouštěče testů.
Použijte koncept multiplikátoru, díky kterému můžete škálovat sestavení na více build agentů. Další informace viz Zadání úloh ve vašem procesu.
Zvažte přesunutí integračních, UI a smoke testů do vydávacího potrubí. Přechod na vývojový řetězec zlepšuje rychlost sestavení a reakční rychlost zpětné vazby ze sestavení.
Publikujte artefakty sestavení do řešení pro správu balíčků, jako je NuGet nebo Maven. Umístění do řešení pro správu balíčků umožňuje snadněji používat výsledný artefakt kompilace.
Implementujte typy sestavení, aby vyhovovaly vašim pracovním postupům
Vaše organizace se může rozhodnout vytvořit několik různých druhů sestavení pro optimalizaci časů sestavení. Mezi možné buildy patří:
Sestavení kontinuální integrace (CI): Účelem tohoto sestavení je zajistit kompilaci kódu a spuštění testů jednotek. Toto sestavení se aktivuje při každém commitu. Slouží jako prezenční signál projektu a okamžitě poskytuje týmu kvalitní zpětnou vazbu. Další informace naleznete v tématu Určení událostí, které aktivují kanály.
Noční sestavení: Účelem nočního sestavení není pouze kompilovat kód, ale také zajistit, aby jakékoli větší testovací sady, které jsou neefektivní, běžely pravidelně při každém sestavení. Tyto testy obvykle zahrnují integrační testy, testy uživatelského rozhraní nebo orientační testy. Další informace najdete v tématu Konfigurace plánů pro kanály.
Verze sestavení: Kromě kompilace a spouštění testů toto sestavení také kompiluje dokumentaci k API, zprávy o shodě, podepisování kódu a další kroky, které nejsou potřebné při každém sestavení kódu. Toto sestavení poskytuje finální verzi, která se odešle do vývojové linie, pro nasazení v produkčním prostředí.
Typy sestavení, které vaše organizace potřebuje, závisí na faktorech, mezi které patří vyspělost vašeho týmu a organizace, druh produktu, na kterém pracujete, a strategii nasazení.
Související odkazy
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: