Kas yra Jenkins ir kam jis naudingas?

Nuolatinė integracija - kas tai?

Nuolatinė integracija yra retai vartojama frazė lietuviškame IT sektoriuje. Populiaresnė yra angliška frazė/vertimas „continuous integration“. IT praktika leisti automatinius testus ir kodo kokybės vertinimo metrikas ne programuotojo kompiuteryje, bet kažkur nutolusiame serveryje.

Nuolatinės integracijos schema

Dar 10 metų atgal, IT pasaulis turėjo ypatingai didelių iššūkių vystant projektus. Tuometinės technologijos jau ir taip turėjo tokių problemų kaip kodo bazės atsarginės kopijos, programavimo greitis, per didelis tų bazių dydis, o automatiniai testai buvo tai, kas į pasaulį tik „mušėsi“.

Šiais laikais visokiems „startupams“ arba net solo programuotojams labai lengva startuoti su krūva įrankių, kurie drastiškai gali pakelti IT projekto kokybę ir stabilumą.

Apie vieną iš tų įrankių šioje straipsnių serijoje - Jenkins.

Automatinio įrankio teikiami privalumai

Pati populiariausia darbo eiga ir panaudojimo pavyzdys: programuotojas nuolat dirbantis prie projekto įkelinėja savo pakeitimus į nutolusį serverį (dar kitaip - push’ina), o nutolęs serveris, „pamatęs“ pakeitimus, vykdo automatinius testus ir praneša, jeigu testai nepavyko.

Tokia darbo eiga turi ne vieną privalumą.

Didelės kodo bazės

Įmonėse kurios turi įspūdingai didelę kodo bazę, tokie kaip Uber, kurie, anot interneto, turi virš tūkstančio repozitorijų, didžiausias privalumas šios darbo eigos yra - greitis/laikas.

Jeigu automatiniai testai vykdosi ilgiau nei kelias minutes, tai leisti juos nuolat programuotojo kompiuteryje yra gerokai per brangu (laiko prasme).

Pranešimai apie defektus

Solo programuotojai iškart pajustų vieną didžiausią pranašumą - greitą pranešimą apie sugadintą kodo vietą.

Pastebėti klaidą dažniau yra daug sunkiau nei ją padaryti. Ypatingai refactorin’ant kodą testų turėjimas labai praverčia.

Apie praneštą klaidą informuoti gali būti ne tik programuotojai, bet ir projektų vadovai ar pagalbos skyriaus žmonės.

Produkcinių sistemų naujinimai

Prieš 5 metus buvo labai populiaru tokioms automatinėms sistemoms atnaujinti produkcines sistemas. Programuotojai tuo tarpu dirbdavo atskirose kodo bazėse (branch’uose), vėliau, kai patobulinimų serija būdavo baigiama - įkeldavo į pagrindinę šaką (jeigu GIT versijavimo sitemoje, tai būtų „master“ branch’as).

Automatinės integracijos įrankis, Jenkins, pavykdęs testus ir gavęs teigiamą rezultatą, kad viskas veikia, įkeldavo pakeitimus į produkcinę sistemą ir pranešdavo komandai apie sėkmingai atliktą darbą.

Kokybės metrikos

Yra labai daug įrankių kodui analizuoti. Nuo pačių paprasčiausių slocccount, kurios matuoja kodo eilutes, iki labai rimtų kokybės analizės įrankių: kodo dubliavimo, geriausių praktikų tikrinimo, saugumo spragų ir pan.

Viena iš tikrai labai naudingų ir vertingų metrikų turėtų būti kodo padengiamumas testais. IT pasaulyje šiuo metu tai viena svarbiausių/populiariausių metrikų jeigu kalbėti grynai tik apie išeities kodą.

Kodėl verta turėti Jenkins?

Jenkins yra iš tiesų labai senas atviro kodo įrankis. Daug geresnių ir tobulesnių sistemų jau yra pasaulyje pagaminta. Tai kam tada jį mokintis?

Viena populiariausių tokių alternatyvų yra Travis Ci. Deja, jinai yra nemokama tik atviro kodo projektams. Kas, iš kitos pusės, yra labai gerai, nes turint tokius projektus nereikia rūpintis privačia įranga kodo kokybei stebėti.

Straipsnių serija apie Jenkins

Privačioms repozitorijoms teks atverti piniginę. Jeigu kalbėti tik apie dešimt ar mažiau repozitorijų, tai turėti tokį kaip Travis CI kainuos ypatingai daug.

Dedikuotas serveris su Jenkins - kainuos centus per mėnesį.

Dedikuotame serveryje mažiau problemų su privatumu, nes prieigą galite susikonfigūruoti taip, kad nei kas rastų kur Jūsų serveris, nei galėtų jį pasiekti.

Jenkins turi labai daug įskiepių. Virš tūkstančio gali neatrodyti įspūdingas kiekis, bet dažniausiai įskiepiai palaiko didelį sąrašą išeities kodo kalbų ir konfigūracijų.

Šis įrankis nereikalauja ypatingai daug resursų, todėl net mažiausiame dedikuoto serverio plane išsiversite nesunkiai.

Komentarai