Danas ćemo se osvrnuti na povijest termina, raspraviti o izazovima implementacije CI-a i navesti nekoliko popularnih alata koji će vam pomoći u radu s njim.
/ Flickr / / / Фото изменено
Termin
Continuous Integration (neprekidna integracija) je pristup razvoju aplikacija koji podrazumijeva učestalo izvođenje gradnji projekta i testiranje koda.
Cilj je učiniti proces integracije predvidivim i otkriti potencijalne greške i pogreške u ranoj fazi, kako bi se imalo više vremena za njihovo ispravljanje.
Termin Continuous Integration prvi je puta upotrijebljen 1991. godine. Uveo ga je tvorac jezika UML (Grady Booch). Inženjer je predstavio CI koncept kao dio vlastite prakse razvoja — . Podrazumijevao je inkrementalno usavršavanje arhitekture pri dizajniranju sustava objektno-orijentirane arhitekture. Grady nije opisao zahtjeve za kontinuiranu integraciju. No, kasnije je u svojoj knjizi „“ naveo da je cilj metode ubrzati izbacivanje „internih izdanja”.
Povijest
Godine 1996. CI su preuzeli tvorci metodologije (XP) — (Kent Beck) i (Ron Jeffries). Kontinuirana integracija postala je jedan od dvanaest ključnih principa njihovog pristupa. Osnivači XP-a su precizirali zahtjeve za CI metodologiju i istaknuli potrebu za izvođenjem gradnje projekta nekoliko puta dnevno.
Početkom 2000-ih metodologiju kontinuirane integracije počeo je promovirati jedan od osnivača Agile Alliance (Martin Fowler). Njegovi eksperimenti s CI-jem doveli su do pojave prvog softverskog alata u toj oblasti — CruiseControl. Alat je stvorio Martinov kolega — Matthew Foemmel.
Ciklus gradnje u alatu je realiziran kao demon koji povremeno provjerava sustav za upravljanje verzijama na promjene u kodnoj bazi. Rješenje je moguće preuzeti i danas — pod je BSD-sličnom licencom.
S pojavom softvera za CI prakse su sve više usvajale razne kompanije. Prema istraživanju Forrester [str.5 ], u 2009. godini 86% od pedeset anketiranih tehnoloških kompanija koristilo je ili implementiralo CI metodologije.
Danas se praksa kontinuirane integracije koristi od strane organizacija iz raznih industrija. U 2018. godini veliki pružatelj oblaka proveo je anketu među IT stručnjacima kompanija iz sektora usluga, obrazovanja i financija. Od šest tisuća ispitanika, 58% je odgovorilo da koristi alate i principe CI u svom radu.
Kako to funkcionira
Osnovu kontinuirane integracije čine dva alata — sustav kontrole verzija i CI poslužitelj. Potonji može biti fizički uređaj ili virtualna mašina u oblaku. Programeri jednom ili više puta dnevno učitavaju novi kod. CI poslužitelj automatski ga kopira sa svim zavisnostima i izvršava izgradnju. Nakon toga pokreće integracijske i jedinične testove. Ako testovi prođu uspješno, CI sustav implementira kod.
Opću shemu procesa možemo predstaviti na sljedeći način:

Metodologija CI postavlja niz zahtjeva prema programerima:
- Odmah ispraviti probleme. Ova načela preuzeta su iz ekstremnog programiranja. Ispravljanje grešaka je najprioritetniji zadatak programera.
- Automatizirati procese. Programeri i menadžeri moraju konstantno tražiti "uska grla" u procesu integracije i uklanjati ih. Na primjer, često je "usko grlo" integracije testiranje.
- Izvoditi izgradnje što je češće moguće. Jednom dnevno, kako bi se uskladila suradnja tima.
Teškoće u implementaciji
Prvi problem su visoki operativni troškovi. Čak i ako kompanija koristi otvorene CI alate (o kojima ćemo razgovarati kasnije), i dalje će morati potrošiti novac na održavanje infrastrukture. Međutim, rješenje mogu biti oblacne tehnologije.
Olakšavaju izgradnju raznoraznih računalnih konfiguracija. Plus, kompanije samo za korištene resurse, što pomaže u štednji na infrastrukturi.
Prema anketama [str.14 ], kontinuirana integracija povećava opterećenje zaposlenika kompanije (barem u početku). Oni moraju svladati nove alate, a kolege ne pomažu uvijek s obukom. Stoga se moraju snalaziti s novim okvirima i servisima "u hodu".
Treća poteškoća su problemi s automatizacijom. S tim se suočavaju organizacije s velikim količinama legacy koda koji nije pokriven automatiziranim testovima. To dovodi do toga da se kod jednostavno prekraja prije punog uvođenja CI.

/ Flickr / /
Tko koristi
Jedni od prvih koji su prepoznali prednosti metode su IT divovi. Google je uveo neprekidnu integraciju sredinom 2000-ih. CI je implementiran kako bi riješio problem s kašnjenjem u radu pretraživača. Neprekinuta integracija je pomogla brzo otkrivanje i otklanjanje problema. Danas sve IT divizije koriste CI.
Neprekinuta integracija također pomaže i manjim tvrtkama, a alati CI koriste i financijske i zdravstvene organizacije. Na primjer, u Morningstar, usluge neprekidne integracije su pomogle u zakrpanju ranjivosti 70% brže. A zdravstvena platforma Philips Healthcare uspjela je udvostručiti brzinu testiranja ažuriranja.
Alati
Evo nekoliko popularnih alata za CI:
- je jedan od najpopularnijih CI sustava. Podržava više od tisuću dodataka za integraciju s različitim VCS-ovima, oblacima i drugim uslugama. Jenkins koristimo i mi u 1cloud: alat . Redovito provjerava Git granu namijenjenu testiranju.
- je Python okvir za pisanje vlastitih procesa neprekidne integracije. Početna konfiguracija alata prilično je složena, no to se nadoknađuje širokim mogućnostima prilagodbe. Među prednostima okvira korisnici ističu nisku potrošnju resursa.
- je poslužitelj od Pivotal-a koji koristi Docker kontejnere. Concourse CI se integrira s bilo kojim alatima i sustavima kontrole verzija. Razvijači ističu da je sustav prikladan za rad u tvrtkama svih veličina.
- je alat koji je ugrađen u sustav kontrole verzija GitLab. Usluga radi u oblaku i koristi YAML datoteke za konfiguraciju. Kao i Concourse, Gitlab CI Docker kontejnere koji pomažu u izolaciji različitih procesa jednih od drugih.
- — oblačni CI poslužitelj koji radi s GitHubom, GitLabom i BitBucketom. Platforma ne zahtijeva dugotrajno početno postavljanje — u Codeshipu su dostupni standardni unaprijed instalirani CI procesi. Za male (do 100 izrada mjesečno) i open source projekte, Codeship je dostupan besplatno.
Materijali iz našeg korporativnog bloga:
Izvor: habr.com
