Referenca: kako funkcioniše proces kontinuirane integracije

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.

Referenca: kako funkcioniše proces kontinuirane integracije
/Flickr/ Altug Karakoc / CC BY / 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 Butch (Grady Booch). Inženjer je uveo koncept CI kao dio vlastite razvojne prakse - Booch metoda. 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 “Objektno orijentirana analiza i dizajn s aplikacijama“Rekao je da je cilj metodologije ubrzati objavljivanje “internih izdanja”.

История

1996. godine CI su usvojili kreatori metodologije ekstremno programiranje (XP) - Kent Beck (Kent Beck) i Ron Jeffries (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 (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 distribuira 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 izvještaj], 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:

Referenca: kako funkcioniše proces kontinuirane integracije

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 ispada 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 platiti samo za korištene resurse, što pomaže u uštedi na infrastrukturi.

Prema anketama [str. 14 članci], 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.

Referenca: kako funkcioniše proces kontinuirane integracije
/Flickr/ theilr / CC BY-SA

Ko koristi

IT divovi su među prvima shvatili prednosti ove metodologije. Google koristi 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:

  • Jenkins 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 uključeni u naš DevOps sistem. Redovno provjerava Git granu namijenjenu testiranju.
  • Buildbot — 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.
  • Konkurs CI 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.
  • Gitlab CI je alat ugrađen u GitLab sistem kontrole verzija. Usluga radi u oblaku i koristi YAML datoteke za konfiguraciju. Kao Concourse, Gitlab CI primjenjuje Docker kontejneri koji pomažu u izolaciji različitih procesa jedan od drugog.
  • Kodeks 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

Dodajte komentar