Danas ćemo pogledati istoriju termina, razgovarati o poteškoćama implementacije CI i ponuditi nekoliko popularnih alata koji će vam pomoći da radite s njim.
/Flickr/ / / Fotografija izmijenjena
Termin
Kontinuirana integracija je pristup razvoju aplikacija koji uključuje česte gradnje projekata i testiranje koda.
Cilj je učiniti proces integracije predvidljivim i otkriti potencijalne greške i greške u ranoj fazi, tako da ima više vremena za njihovo popravljanje.
Termin Kontinuirana integracija prvi put se pojavio 1991. godine. Uveo ga je kreator UML jezika (Grady Booch). Inženjer je uveo koncept CI kao dio vlastite razvojne prakse - . To je podrazumijevalo inkrementalno usavršavanje arhitekture prilikom projektovanja objektno orijentisanih sistema. Gradi nije opisao nikakve zahtjeve za kontinuiranu integraciju. Ali kasnije u svojoj knjizi ““Rekao je da je cilj metodologije ubrzati objavljivanje “internih izdanja”.
История
1996. godine CI su usvojili kreatori metodologije (XP) - (Kent Beck) i (Ron Jeffries). Kontinuirana integracija postala je jedan od dvanaest ključnih principa njihovog pristupa. Osnivači XP-a su razjasnili zahtjeve za CI metodologiju i istakli potrebu da se projekat gradi nekoliko puta dnevno.
Početkom 2000-ih, jedan od osnivača Agilne alijanse počeo je promovirati metodologiju kontinuirane integracije (Martin Fowler). Njegovi eksperimenti sa CI doveli su do prvog softverskog alata u ovoj oblasti - CruiseControl. Uslužni program je kreirao Martinov kolega, Matthew Foemmel.
Ciklus izgradnje u alatu je implementiran kao demon koji periodično provjerava sistem kontrole verzija za promjene u bazi koda. Rješenje se može preuzeti danas - it pod BSD licencom.
Sa pojavom softvera za CI, sve je više kompanija počelo da usvaja tu praksu. Prema Forresterovom istraživanju [str. 5 ], 2009. godine, 86% od pedesetak tehnoloških kompanija koje su ispitane koristilo je ili implementiralo CI metode.
Danas praksu kontinuirane integracije koriste organizacije iz raznih industrija. U 2018. godini, veliki provajder u oblaku sproveo je anketu među IT stručnjacima iz kompanija u sektoru usluga, obrazovanja i finansija. Od šest hiljada ispitanika, 58% je reklo da koristi CI alate i principe u svom radu.
Kako ovo radi
Kontinuirana integracija se zasniva na dva alata: sistemu kontrole verzija i CI serveru. Potonji može biti ili fizički uređaj ili virtuelna mašina u okruženju oblaka. Programeri postavljaju novi kod jednom ili više puta dnevno. CI server ga automatski kopira sa svim zavisnostima i gradi. Nakon toga, pokreće integracijske i jedinične testove. Ako testovi prođu uspješno, CI sistem implementira kod.
Opšti dijagram procesa može se predstaviti na sljedeći način:

CI metodologija postavlja niz zahtjeva za programere:
- Odmah otklonite probleme. Ovaj princip je došao u CI iz ekstremnog programiranja. Ispravljanje grešaka je najveći prioritet programera.
- Automatizirajte procese. Programeri i menadžeri moraju stalno tražiti uska grla u procesu integracije i eliminisati ih. Na primjer, često postoji usko grlo u integraciji testiranje.
- Sprovodite skupove što je češće moguće. Jednom dnevno za sinhronizaciju rada tima.
Poteškoće u implementaciji
Prvi problem su visoki operativni troškovi. Čak i ako kompanija koristi otvorene CI alate (o čemu ćemo govoriti kasnije), i dalje će morati da troši novac na podršku infrastrukture. Međutim, cloud tehnologije mogu biti rješenje.
Oni pojednostavljuju sastavljanje računarskih konfiguracija različitih razmera. Plus kompanije samo za korištene resurse, što pomaže u uštedi na infrastrukturi.
Prema anketama [str. 14 ], kontinuirana integracija povećava opterećenje zaposlenih u kompaniji (barem u početku). Moraju naučiti nove alate, a kolege ne pomažu uvijek u obuci. Stoga se morate u hodu baviti novim okvirima i uslugama.
Treća poteškoća su problemi s automatizacijom. Organizacije s velikom količinom naslijeđenog koda koji nije pokriven automatiziranim testovima suočavaju se s ovim problemom. To dovodi do činjenice da se kod jednostavno prepisuje prije pune implementacije CI.

/Flickr/ /
Ko koristi
IT divovi su među prvima shvatili prednosti ove metodologije. Google kontinuirana integracija od sredine 2000-ih. CI je implementiran kako bi se riješio problem kašnjenja u pretraživaču. Kontinuirana integracija pomogla je u brzom otkrivanju i rješavanju problema. Sada CI koriste svi odjeli IT giganta.
Kontinuirana integracija pomaže i malim kompanijama, a CI alate koriste i finansijske i zdravstvene organizacije. Na primjer, u Morningstaru, usluge kontinuirane integracije pomogle su da se ranjivosti zakrpe 70% brže. A medicinska platforma Philips Healthcare uspjela je udvostručiti brzinu testiranja ažuriranja.
Alati
Evo nekoliko popularnih alata za CI:
- je jedan od najpopularnijih CI sistema. Podržava više od hiljadu dodataka za integraciju sa raznim VCS, cloud platformama i drugim servisima. Koristimo i Jenkins u 1cloud: alatu . Redovno provjerava Git granu namijenjenu testiranju.
- — python okvir za pisanje vlastitih kontinuiranih procesa integracije. Početno podešavanje alata je prilično komplicirano, ali to se kompenzira širokim mogućnostima prilagođavanja. Među prednostima okvira korisnici ističu njegov nizak intenzitet resursa.
- je Pivotalov server koji koristi Docker kontejnere. Concourse CI se integriše sa svim alatima i sistemima kontrole verzija. Programeri napominju da je sistem pogodan za rad u kompanijama bilo koje veličine.
- je alat ugrađen u GitLab sistem kontrole verzija. Usluga radi u oblaku i koristi YAML datoteke za konfiguraciju. Kao Concourse, Gitlab CI Docker kontejneri koji pomažu u izolaciji različitih procesa jedan od drugog.
- je cloud CI server koji radi sa GitHub, GitLab i BitBucket. Platforma ne zahteva dugo početno podešavanje - standardni unapred instalirani CI procesi su dostupni u Codeship-u. Za male (do 100 build-ova mjesečno) i projekte otvorenog koda, Codeship je dostupan besplatno.
Materijali sa našeg korporativnog bloga:
izvor: www.habr.com
