Referenca: kako poteka proces nepretrganega integriranja

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.

Referenca: kako poteka proces nepretrganega integriranja
/ Flickr / Altug Karakoc / CC BY / Фото изменено

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 (Grady Booch). Inženir je predstavil koncept CI kot del svoje lastne prakse razvoja — Boochove metode. 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 „Object-Oriented Analysis and Design with Applications“ dejal, da je naloga metode pospešiti izdajo „notranjih različic“.

Zgodovina

Leta 1996 so CI prevzeli ustvarjalci metodologije ekstremnega programiranja (XP) — Kent Beck (Kent Beck) in Ron Jeffries (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 (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 se distribuira pod BSD-podobno licenco.

S pojavom programske opreme za CI so začele vse več podjetij prevzemati to prakso. Po raziskavi Forrester [str. 5 poročila] 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:

Referenca: kako poteka proces nepretrganega integriranja

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 se izkaže, 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 jim plačajo plačujejo le za uporabljene vire, kar pomaga pri varčevanju z infrastrukturo.

Glede na ankete [str.14 članka], 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.

Referenca: kako poteka proces nepretrganega integriranja
/ Flickr / theilr / CC BY-SA

Kdo uporablja

Med prvimi so prednosti metode prepoznali IT giganti. Google uporablja 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:

  • Jenkins — 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 je del naše DevOps sistema. Redno preverja Git vejo, namenjeno testiranju.
  • Buildbot — 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.
  • Concourse CI — 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.
  • Gitlab CI — orodje, vgrajeno v sistem nadzora različic GitLab. Storitve delujejo v oblaku in uporabljajo YAML datoteke za konfiguracijo. Tako kot Concourse, Gitlab CI uporablja Docker kontejnerje, ki pomagajo izolirati različne procese drug od drugega.
  • Codeship — 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

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster