Danes se bomo posvetili zgodovini izrazov, razpravljali o težavah pri uvajanju CI in predstavili nekaj priljubljenih orodij, ki vam bodo pomagala pri delu z njim.
/ Flickr / / / Фото изменено
Izraz
Continuous Integration (nenehna integracija) je pristop k razvoju aplikacij, ki vključuje pogosto izvajanje gradnje projekta in testiranje kode.
Cilj je, da se proces integracije postane predvidljiv in da se morebitne napake in težave odkrijejo v zgodnji fazi, kar daje več časa za njihovo odpravo.
Izraz Continuous Integration se je prvič pojavil leta 1991. Uvedel ga je avtor jezika UML (Grady Booch). Inženir je predstavil koncept CI kot del svoje lastne prakse razvoja — . Predvideval je postopno natančenje arhitekture pri oblikovanju sistemov, ki so usmerjeni v objekte. Grady ni opisal nobenih zahtev po nenehni integraciji. Kasneje pa je v svoji knjigi „“ dejal, da je naloga metode pospešiti izdajo „notranjih različic“.
Zgodovina
Leta 1996 so CI prevzeli ustvarjalci metodologije (XP) — (Kent Beck) in (Ron Jeffries). Nenehna integracija je postala ena od dvanajstih ključnih načel njihovega pristopa. Ustanovitelji XP so natančili zahteve za metodologijo CI in poudarili potrebo po večkratni gradnji projekta na dan.
Na začetku 2000-ih je metodologijo nenehne integracije začel promovirati eden od ustanoviteljev Agile Alliance (Martin Fowler). Njegovi poskusi z CI so vodili k nastanku prvega programskega orodja na tem področju — CruiseControl. Orodje je ustvaril Martinov kolega Matthew Foemmel.
Cikel gradnje v orodju je izveden kot demon, ki občasno preverja sistem za upravljanje različic na spremembe v osnovni kodi. Rešitev je še vedno na voljo za prenos — je pod BSD-podobno licenco.
S pojavom programske opreme za CI so začele vse več podjetij prevzemati to prakso. Po raziskavi Forrester [str. 5 ] je leta 2009 86% od petdesetih anketiranih tehnoloških podjetij uporabljalo ali uvajalo metode CI.
Danes praksa kontinuirane integracije uporablja širok spekter organizacij iz različnih industrij. Leta 2018 je večji oblačni ponudnik izvedel anketo med IT strokovnjaki iz podjetij s področja storitev, izobraževanja in financ. Od šest tisoč respondenta jih je 58% odgovorilo, da uporabljajo CI orodja in principe v svojem delu.
Kako to funkcionira
Osnova kontinuirane integracije sta dva orodja — sistem za nadzor različic in CI strežnik. Ta je lahko fizična naprava ali virtualni stroj v oblačnem okolju. Razvijalci naložijo nov kodo enkrat ali večkrat dnevno. CI strežnik jo samodejno kopira z vsemi odvisnostmi in izvede gradnjo. Nato zažene integracijske in enotne teste. Če testi uspejo, CI sistem razširi kodo.
Splošno shemo procesa lahko predstavimo takole:

Metodologija CI postavlja določene zahteve pred razvijalce:
- Nemudoma odpraviti težave. Ta princip je prišel v CI iz ekstremnega programiranja. Odpravljanje napak je najpomembnejša naloga razvijalcev.
- Avtomatizirati procese. Razvijalci in menedžerji morajo nenehno iskati »ozka grla« v integracijskem procesu in jih odpravljati. Na primer, pogosto so »ozka grla« integracije testiranje.
- Izvajati gradnje čim pogosteje. Enkrat dnevno, da uskladi delo ekipe.
Težave pri uvedbi
Prva težava so visoki operativni stroški. Tudi če podjetje uporablja odprta CI orodja (o katerih bomo govorili kasneje), bo vseeno moralo porabiti sredstva za vzdrževanje infrastrukture. Vendar pa so oblačne tehnologije lahko rešitev.
Oni poenostavijo gradnjo raznovrstnih računalniških konfiguracij. Plus, podjetja plačujejo le za uporabljene vire, kar pomaga pri varčevanju z infrastrukturo.
Glede na ankete [str.14 ], kontinuirana integracija povečuje obremenitev zaposlenih podjetja (vsaj v začetku). Morajo obvladati nova orodja, kolegi pa ne pomagajo vedno pri usposabljanju. Zato se morajo spoprijemati z novimi ogrodji in storitvami »v teku«.
Tretja težava so težave z avtomatizacijo. S tem se srečujejo organizacije z velikim obsegom legacy kode, ki ni pokrita z avtomatiziranimi testi. To vodi v to, da se kodo preprosto prepisuje pred polnim uvajanjem CI.

/ Flickr / /
Kdo uporablja
Med prvimi so prednosti metode prepoznali IT giganti. Google je uvedel neprekinjeno integracijo sredi 2000-ih. CI so uvedli za reševanje težav z zamudami pri delovanju iskalnika. Neprekinjena integracija je pomagala hitro odkrivati in odpravljati napake. Danes CI uporablja vse enote IT giganta.
Neprekinjena integracija koristi tudi majhnim podjetjem, orodja CI pa uporabljajo tudi finančne in medicinske organizacije. Na primer, v Morningstar so orodja neprekinjene integracije pomagala zakrpati ranljivosti 70 % hitreje. Medicinska platforma Philips Healthcare je uspela podvojiti hitrost testiranja posodobitev.
Orodja
Tukaj je nekaj priljubljenih orodij za CI:
- — eden najbolj priljubljenih sistemov CI. Podpira več kot tisoč vtičnikov za integracijo z različnimi sistemi za nadzor različic, oblačnimi platformami in drugimi storitvami. Jenkins uporabljamo tudi mi v 1cloud: to orodje . Redno preverja Git vejo, namenjeno testiranju.
- — python okvir za pisanje lastnih procesov neprekinjene integracije. Prvotna nastavitev orodja je precej zapletena, vendar to odtehta široka možnost prilagoditve. Med prednostmi okvira uporabniki izpostavljajo njegovo nizko porabo virov.
- — strežnik Pivotal, ki uporablja Docker kontejnerje. Concourse CI se integrira z vsemi orodji in sistemi nadzora različic. Razvijalci opažajo, da je sistem primeren za delo v podjetjih vseh velikosti.
- — orodje, vgrajeno v sistem nadzora različic GitLab. Storitve delujejo v oblaku in uporabljajo YAML datoteke za konfiguracijo. Tako kot Concourse, Gitlab CI Docker kontejnerje, ki pomagajo izolirati različne procese drug od drugega.
- — oblačni CI strežnik, ki deluje z GitHub, GitLab in BitBucket. Platforma ne zahteva dolge začetne nastavitve — v Codeship so na voljo standardni prednastavljeni CI procesi. Za majhna (do 100 gradnjah na mesec) in open source projekte je Codeship na voljo brezplačno.
Materiali iz našega korporativnega bloga:
Izvor: habr.com
