Co je CI/CD? Průběžná integrace a průběžné doručování

Co je kontinuální integrace (CI)?

Kontinuální integrace je metoda vývoje softwaru, kdy členové týmu integrují svou práci alespoň jednou denně. Při této metodě je každá integrace kontrolována automatizovaným sestavením, aby se zjistily chyby. Tento koncept byl poprvé představen před více než dvěma desetiletími, aby se zabránilo „integračnímu peklu“, ke kterému dochází, když je integrace odložena na konec projektu.

V kontinuální integraci po odevzdání kódu je software okamžitě vytvořen a testován. Ve velkém projektu s mnoha vývojáři se commity dělají mnohokrát za den. S každým potvrzením je vytvořen a testován. Pokud test projde, sestavení se otestuje pro nasazení. Pokud je nasazení úspěšné, kód je odeslán do produkce. Toto potvrzení, sestavení, testování a nasazení je nepřetržitý proces, a proto se nazývá nepřetržitá integrace/nasazování.

Co je to Continuous Delivery (CD)?

Continuous Delivery je metoda softwarového inženýrství, při které tým vyvíjí softwarové produkty v krátkém cyklu. Zajišťuje, že software lze kdykoli snadno uvolnit. Hlavním cílem nepřetržitého poskytování je vytvářet, testovat a vydávat software s dobrou rychlostí a frekvencí. Pomáhá vám snížit náklady, čas a riziko provádění změn tím, že umožňuje časté aktualizace v produkci.

Jaký je rozdíl mezi CI a CD?

CI vs CD: Průběžná integrace (CI) je přístup k automatickému testování každé změny kódové základny, zatímco průběžné doručování (CD) je přístup k získání změn nových funkcí, konfigurace a oprav chyb.

Vývoj bez CI vs. Vývoj s CI

Zde jsou klíčové rozdíly mezi vývojem pomocí CI a bez CI:

Vývoj bez CI Vývoj s CI
Spousta Bugů Méně chyb
Méně časté závazky Pravidelné závazky
Méně časté a pomalé uvolňování Pravidelné pracovní uvolnění
Obtížná integrace Snadná a efektivní integrace
Testování probíhá pozdě Průběžné testování integrace probíhá brzy a často.
Nastolený problém se řeší obtížněji Najděte a opravte problémy rychleji a efektivněji.
Špatná viditelnost projektu Lepší viditelnost projektu

Rozdíl mezi kompilací a kontinuální integrací

Aktivity v kontinuální integraci
Aktivity v kontinuální integraci

Zatímco kompilace pouze kompiluje kód, CI provádí následující činnosti

DB integrace

  • Zajistěte synchronizaci DB a kódu
  • Automatizované vytváření DB a testovacích dat.

Kontrola kódu

  • Zajišťuje zdravou kódovou základnu
  • Včas identifikuje problémy a aplikuje osvědčené postupy

Automatické nasazení

  • Umožňuje uvolnit produkt kdykoli
  • Neustále demo-schopný stav a funguje na jakémkoli počítači

Generování dokumentu

  • Ujistěte se, že dokumentace je aktuální
  • Odstraňuje spálené z vývojky
  • Vytváří sestavovací sestavy a metriky

Kompilace

Kompilace je proces, kterým počítač převádí kód programovacího jazyka na vysoké úrovni do strojového jazyka, kterému je počítač schopen porozumět. Zajišťuje kompilátor kódu na každé cílové platformě.

Kdy budu stavět?

  • Při každém check-inu
  • Pokaždé, když se závislost změní

Jaké kroky jsou v průběžné integraci?

Proces CI
CI proces
  • V ideálním případě by sestavení mělo pocházet z příkazového řádku a nemělo by záviset na integrovaném vývojovém prostředí (IDE).
  • Sestavení by mělo probíhat nepřetržitě pomocí vyhrazeného Cl serveru, nikoli úlohy cron.
  • CI zabudované by se mělo spouštět při každém odbavení a ne jen o půlnoci
  • Sestavení by mělo poskytovat okamžitou zpětnou vazbu a nevyžadovat žádné úsilí vývojáře
  • Identifikujte klíčové metriky a sledujte je vizuálně. Ještě důležitější je, jednat podle nich okamžitě

Co potřebujete k provedení procesu CI?

Proveďte proces CI

Zde jsou klíčové prvky, které potřebujete k provedení celého procesu CI:

  • Systém správy verzí (VCS): Nabízí spolehlivou metodu centralizace a zachování změn provedených ve vašem projektu v průběhu času.
  • Virtuální stroj: Měli byste mít náhradní server nebo alespoň jeden virtuální stroj k vybudování vašeho systému.
  • Hostovaná řešení CI Tool Solutions: Abyste se vyhnuli serverům nebo virtuálním strojům, měli byste zvolit řešení hostovaných nástrojů CI. Tento nástroj pomáhá při údržbě celého procesu a nabízí snadnější škálovatelnost.
  • Nástroje: Pokud vyberete variantu s vlastním hostitelem, budete muset nainstalovat jednu z mnoha CI nástroje jako Jenkins, TeamCity, Bamboo, GitLab atd.

Jak funguje průběžná integrace?

Určitě znáte starý telefon Nokia. Nokia dříve implementovala proceduru zvanou nightly build. Po několika potvrzeních od různých vývojářů během dne byl software vytvořen každou noc. Vzhledem k tomu, že software byl vytvořen pouze jednou za den, je velmi obtížné izolovat, identifikovat a opravovat chyby ve velké kódové základně.

Later, přijali přístup kontinuální integrace. Software byl vytvořen a otestován, jakmile vývojář svěřil kód. V případě zjištění jakékoli chyby může příslušný vývojář závadu rychle opravit.

Příklad kontinuální integrace
Příklad kontinuální integrace

Vlastnosti CI

Zde jsou důležité funkce a výhody kontinuální integrace:

  • Umožňuje udržovat pouze jediné zdrojové úložiště
  • Můžete otestovat klon produkčního prostředí CI
  • Vybudované prostředí by mělo být blízké produkčnímu prostředí.
  • Jednou z výhod kontinuální integrace je neustálá dostupnost aktuálního sestavení
  • Celý proces sestavení, testování a nasazení by měl být viditelný pro všechny držitele zásobníku.

Proč používat CI?

Zde jsou důležité důvody pro použití kontinuální integrace:

  • Pomáhá vám vytvářet kvalitnější software
  • Proces CI pomáhá zvýšit počet zaměstnanců a výkon dodávek inženýrských týmů.
  • CI umožňuje vývojářům softwaru pracovat nezávisle na funkcích paralelně.
  • Pomáhá provádět opakovatelné testování
  • Zvyšte viditelnost umožňující lepší komunikaci
  • Pomáhá vyvinout potenciálně dodávaný produkt pro plně automatizované sestavení
  • Pomáhá snížit rizika tím, že je nasazení rychlejší a předvídatelnější
  • okamžitá zpětná vazba, když problém dorazí
  • Vyhněte se zmatkům na poslední chvíli ohledně data a načasování vydání

Osvědčené postupy používání systémů CI

Zde jsou některé důležité osvědčené postupy při implementaci

  • Spáchat brzy a často nikdy nespáchat porušený kód
  • Okamžitě opravte selhání sestavení
  • Jednat o metrikách
  • Zabudujte každé cílové prostředí Vytvářejte artefakty z každého sestavení
  • Sestavení softwaru musí být provedeno způsobem, který umožní automatizaci
  • Nespoléhejte na IDE
  • Vytvářejte a testujte vše, když se to změní
  • Databázové schéma se počítá jako vše
  • Pomáhá vám zjistit klíčové metriky a vizuálně je sledovat
  • Check-in často a brzy
  • Silnější kontrola zdrojového kódu
  • Nepřetržitá integrace je spuštění testů jednotek, kdykoli odevzdáte kód
  • Automatizujte sestavení a otestujte všechny
  • Udržujte sestavení rychlé díky automatickému nasazení

Nevýhody CI

Zde jsou nevýhody/nevýhody procesu kontinuální integrace:

  • Pro seznámení se s Cl serverem je nutný čas počátečního nastavení a školení
  • Vývoj vhodných zkušebních postupů je nezbytný
  • Dobře vyvinutá testovací sada vyžadovala mnoho zdrojů pro Cl server
  • Konverze známých procesů
  • Vyžaduje další servery a prostředí
  • Čekací doby mohou nastat, když chce více vývojářů integrovat svůj kód ve stejnou dobu

Nástroje pro CI proces

Zde jsou některé nejdůležitější nástroje CI/CD:

Jenkins

Jenkins

Jenkins je otevřený software pro nepřetržitou integraci. Je psán pomocí Java programovací jazyk. Usnadňuje testování v reálném čase a podávání zpráv o izolovaných změnách v masivnější kódové základně. Tento software pomáhá vývojářům rychle najít a vyřešit defekty v jejich kódové základně a automatizovat testování jejich sestav.

Bamboo

Bamboo

Bamboo je kontinuální integrační sestavení server, který provádí – automatické sestavení, testování a vydání na jediném místě. Bezproblémově funguje se softwarem JIRA a Bitbucket. Bamboo podporuje mnoho jazyků a technologií, jako jsou CodeDeply, Docker, Git, SVN, Mercurial, AWS a Amazon S3 kbelíky.

TeamCity

TeamCity

TeamCity je server pro nepřetržitou integraci, který podporuje mnoho výkonných funkcí. Udržuje server CI zdravý a stabilní, i když nejsou spuštěny žádné sestavení. Poskytuje lepší kvalitu kódu pro jakýkoli projekt

Shrnutí

  • Definice průběžné integrace: Průběžná integrace je metoda vývoje softwaru, kde členové týmu mohou integrovat svou práci alespoň jednou denně.
  • CI/CD znamená kombinaci průběžné integrace a průběžného dodávání nebo průběžného zavádění.
  • Vývoj bez CI vytváří spoustu chyb, zatímco Vývoj s CI nabízí méně chyb
  • Důležitými aktivitami kontinuální integrace jsou 1) integrace DB, 2) kontrola kódu, 3) automatizované nasazení, generování dokumentů a kompilace.
  • Sestavení by mělo probíhat nepřetržitě pomocí vyhrazeného Cl serveru, nikoli úlohy cron.
  • Důležité prvky CI jsou 1) Systém správy verzí 2) Virtuální stroj 3) Hostitelská řešení CI Tool 4) Nástroje
  • Systém kontinuální integrace umožňuje udržovat pouze jediné zdrojové úložiště
  • Proces CI/CD vám pomůže vytvořit kvalitnější software
  • Nejdůležitější osvědčené postupy Azure Nepřetržitý integrační proces je zavázat se včas a zavázat se často nikdy nespáchat porušený kód
  • Hlavní nevýhodou CI/CD potrubí Proces spočívá v tom, že dobře vyvinutá testovací sada vyžadovala mnoho zdrojů pro Cl server
  • Jenkins, Bambook a Team City jsou některé užitečné AWS Continuous Integrační nástroje.