Što je CI/CD? Kontinuirana integracija i kontinuirana isporuka
Što je kontinuirana integracija (CI)?
Kontinuirana integracija je metoda razvoja softvera gdje članovi tima integriraju svoj rad barem jednom dnevno. U ovoj metodi, svaku integraciju provjerava automatizirana izrada kako bi se otkrile pogreške. Ovaj je koncept prvi put uveden prije više od dva desetljeća kako bi se izbjegao "integracijski pakao", koji se događa kada se integracija odgodi do kraja projekta.
U kontinuiranoj integraciji nakon prihvaćanja koda, softver se gradi i testira odmah. U velikom projektu s mnogo programera, predaje se izvršavaju mnogo puta tijekom dana. Uz svaki commit kod se gradi i testira. Ako je test prošao, verzija se testira za implementaciju. Ako je implementacija uspješna, kod se gura u proizvodnju. Ovo uvrštavanje, izgradnja, testiranje i implementacija je kontinuirani proces, i otuda naziv kontinuirana integracija/deployment.
Što je kontinuirana isporuka (CD)?
Kontinuirano isporuke je metoda softverskog inženjeringa u kojoj tim razvija softverske proizvode u kratkom ciklusu. Osigurava da se softver može lako objaviti u bilo kojem trenutku. Glavni cilj kontinuirane isporuke je izgradnja, testiranje i izdavanje softvera s dobrom brzinom i učestalošću. Pomaže vam smanjiti troškove, vrijeme i rizik isporuke promjena dopuštajući česta ažuriranja u proizvodnji.
Koja je razlika između CI i CD-a?
Razvoj bez CI u odnosu na razvoj s CI
Evo ključnih razlika između razvoja pomoću CI-ja ili bez CI-ja:
Razvoj bez CI | Razvoj s CI |
---|---|
Puno grešaka | Manje grešaka |
Rijetke obveze | Redoviti obvezi |
Rijetka i spora otpuštanja | Redovita radna izdanja |
Teška integracija | Jednostavna i učinkovita integracija |
Testiranje se odvija kasno | Kontinuirano testiranje integracije događa se rano i često. |
Postavljene probleme teže je popraviti | Pronađite i riješite probleme brže i učinkovitije. |
Slaba vidljivost projekta | Bolja vidljivost projekta |
Razlika između kompilacije i kontinuirane integracije

Dok kompilacija samo kompilira kod, CI radi sljedeće aktivnosti
DB integracija
- Osigurajte sinkronizaciju baze podataka i koda
- Automatizirano kreiranje baze podataka i testnih podataka.
Inspekcija koda
- Osigurava zdravu bazu koda
- Rano identificira probleme i primjenjuje najbolje prakse
Automatizirano postavljanje
- Omogućuje vam puštanje proizvoda u promet bilo kada
- Kontinuirano demo-sposobno stanje i radi na svakom stroju
Generiranje dokumenata
- Provjerite je li dokumentacija aktualna
- Uklanja spaljene programere
- Proizvodi izvješća o izradi i metrike
Kompilacija
Kompilacija je proces koji računalo poduzima da pretvori kod programskog jezika visoke razine u strojni jezik koji računalo može razumjeti. Osigurava kompilator koda na svakoj ciljnoj platformi.
Kada ću graditi?
- Pri svakoj prijavi
- Svaki put kad se ovisnost promijeni
Koji su koraci kontinuirane integracije?

- U idealnom slučaju, izgradnja bi trebala dolaziti iz naredbenog retka i ne bi trebala ovisiti o integriranom razvojnom okruženju (IDE).
- Izgradnja bi se trebala odvijati kontinuirano koristeći namjenski Cl poslužitelj, a ne cron posao.
- Izgrađeni CI trebao bi se pokrenuti prilikom svake prijave, a ne samo u ponoć
- Izrada bi trebala pružiti trenutne povratne informacije i ne zahtijeva napor razvojnog programera
- Identificirajte ključne metrike i pratite ih vizualno. Što je još važnije, odmah djelujte na njih
Što vam je potrebno za provođenje CI procesa?
Ovdje su ključni elementi koji su vam potrebni za izvođenje cijelog CI procesa:
- Sustav kontrole verzija (VCS): Nudi pouzdanu metodu za centralizaciju i očuvanje promjena napravljenih na vašem projektu tijekom vremena.
- Virtualni stroj: Trebali biste imati rezervni poslužitelj ili barem jedan virtualni stroj za izgradnju vašeg sustava.
- Hostirana rješenja CI alata: Kako biste izbjegli poslužitelje ili virtualne strojeve, trebali biste se odlučiti za hostirana rješenja CI alata. Ovaj alat pomaže u održavanju cijelog procesa i nudi lakšu skalabilnost.
- Alati: Ako odaberete varijantu s vlastitim hostingom, morat ćete instalirati jednu od mnogih CI alati kao Jenkins, TeamCity, Bamboo, GitLab itd.
Kako funkcionira kontinuirana integracija?
Sigurno ste svjesni starog telefona Nokia. Nokia je provodila postupak koji se naziva noćna izgradnja. Nakon višestrukih obveza različitih programera tijekom dana, softver se gradio svake noći. Budući da se softver izrađuje samo jednom dnevno, velika je muka izolirati, identificirati i popraviti pogreške u velikoj bazi kodova.
Later, usvojili su pristup kontinuirane integracije. Softver je napravljen i testiran čim je programer upisao kod. Ako se otkrije bilo kakva pogreška, dotični programer može brzo popraviti nedostatak.

Značajke CI
Evo važnih značajki i prednosti kontinuirane integracije:
- Omogućuje vam održavanje samo jednog izvornog repozitorija
- Možete testirati klon proizvodnog CI okruženja
- Izgrađeno okruženje mora biti blisko proizvodnom okruženju.
- Jedna od prednosti kontinuirane integracije je stalna dostupnost trenutne verzije
- Kompletan proces izgradnje, testiranja i implementacije trebao bi biti vidljiv svim nositeljima skupova.
Zašto koristiti CI?
Evo važnih razloga za korištenje kontinuirane integracije:
- Pomaže vam da izgradite kvalitetniji softver
- CI proces pomaže povećati broj zaposlenih i učinak isporuke inženjerskih timova.
- CI omogućuje programerima softvera da rade neovisno na značajkama paralelno.
- Pomaže vam da provedete ponovljivo testiranje
- Povećajte vidljivost omogućujući veću komunikaciju
- Pomaže u razvoju proizvoda koji se potencijalno može isporučiti za potpuno automatiziranu izradu
- Pomaže vam smanjiti rizike čineći implementaciju bržom i predvidljivijom
- trenutna povratna informacija kada problem stigne
- Izbjegnite zabunu u zadnji čas oko datuma i vremena izlaska
Najbolje prakse korištenja CI sustava
Ovdje su neke važne najbolje prakse tijekom implementacije
- Počinite rano i počinite često nikad ne pokrenite pokvareni kod
- Odmah popravite greške u izradi
- Djelujte prema metrici
- Ugradite svako ciljno okruženje Stvorite artefakte iz svake građevine
- Izrada softvera mora biti izvedena na način da se može automatizirati
- Nemojte ovisiti o IDE-u
- Izgradite i testirajte sve kada se promijeni
- Shema baze podataka računa se kao sve
- Pomaže vam da saznate ključne metrike i vizualno ih pratite
- Prijava često i rano
- Jača kontrola izvornog koda
- Kontinuirana integracija izvodi jedinične testove svaki put kada predate kod
- Automatizirajte izradu i testirajte sve
- Održavajte brzu izgradnju uz automatiziranu implementaciju
Nedostaci CI
Evo nedostataka/nedostataka procesa kontinuirane integracije:
- Za upoznavanje s Cl poslužiteljem potrebno je početno vrijeme postavljanja i obuka
- Razvoj odgovarajućih ispitnih postupaka je ključan
- Dobro razvijen testni paket zahtijevao je mnogo resursa za Cl poslužitelj
- Pretvorba poznatih procesa
- Zahtijeva dodatne poslužitelje i okruženja
- Do vremena čekanja može doći kada više programera želi integrirati svoj kod otprilike u isto vrijeme
Alati za CI proces
Evo nekih najvažnijih CI/CD alata:
Jenkins
Jenkins je softver za kontinuiranu integraciju otvorenog koda. Napisana je pomoću Java programski jezik. Olakšava testiranje u stvarnom vremenu i izvješćivanje o izoliranim promjenama u masovnijoj bazi koda. Ovaj softver pomaže programerima da brzo pronađu i riješe nedostatke u svojoj bazi koda i automatiziraju testiranje svojih verzija.
Bamboo
Bamboo je poslužitelj za kontinuiranu integraciju koji izvodi – automatsku izgradnju, testiranje i izdanja na jednom mjestu. Radi besprijekorno s JIRA softverom i Bitbucketom. Bamboo podržava mnoge jezike i tehnologije kao što su CodeDeply, Docker, Git, SVN, Mercurial, AWS i Amazon S3 kante.
TeamCity
TeamCity je poslužitelj kontinuirane integracije koji podržava mnoge moćne značajke. Održava CI poslužitelj zdravim i stabilnim čak i kada nijedna verzija nije pokrenuta. Omogućuje bolju kvalitetu koda za svaki projekt
rezime
- Definicija kontinuirane integracije: Kontinuirana integracija je metoda razvoja softvera gdje članovi tima mogu integrirati svoj rad barem jednom dnevno
- CI/CD što znači kombinaciju kontinuirane integracije i kontinuirane isporuke ili kontinuirane implementacije.
- Razvoj bez CI-ja stvara puno grešaka, dok razvoj s CI-jem nudi manje grešaka
- Važne aktivnosti kontinuirane integracije su 1) integracija baze podataka, 2) inspekcija koda, 3) automatizirana implementacija, generiranje dokumenata i kompilacija.
- Izgradnja bi se trebala odvijati kontinuirano koristeći namjenski Cl poslužitelj, a ne cron posao.
- Važni elementi CI-ja su 1) sustav kontrole verzija 2) virtualni stroj 3) rješenja host CI alata 4) alati
- Sustav kontinuirane integracije omogućuje vam održavanje samo jednog izvornog repozitorija
- CI/CD proces vam pomaže da izgradite kvalitetniji softver
- Najvažnije najbolje prakse Azure Kontinuirani integracijski proces je rano uvrštavanje i često nikad ukidanje pokvarenog koda
- Glavni nedostatak od CI/CD cjevovod procesa je da je dobro razvijen testni paket zahtijevao mnogo resursa za Cl poslužitelj
- Jenkins, Bambook, i Team City neki su korisni AWS Continuous Integracijski alati.