Pēdējā laikā IT speciālistu, tostarp izstrādātāju un projektu vadītāju, aprindās arvien biežāk tiek apspriesta CI/CD (Continuous Integration/Continuous Delivery) metodoloģija. Tā ir automatizācijas sistēma, kas atvieglo jauno projekta moduļu testēšanu un piegādi visām ieinteresētajām pusēm: izstrādātājiem, analītiķiem, kvalitātes inženieriem un gala lietotājiem.
CI/CD pamatprincipi
Atbildības sadalījums: Izstrādes procesā dalībnieki un lietotāji uzņemas atbildību par dažādiem produkta dzīves cikla posmiem. Izstrādātāji un dizaineri atbild par biznesa loģikas un lietotāja pieredzes izstrādi, kvalitātes inženieri – par testēšanu, bet DevOps inženieri – par koda loģistiku.
Riska samazināšana: Katrs dalībnieku grupas loceklis minimizē riskus visos produkta dzīves cikla posmos, nodrošinot kontroli pār biznesa loģikas un lietotāja pieredzes integritāti.
Īss atgriezeniskās saites cikls: Ir svarīgi ātri reaģēt uz kļūdām un pieprasījumiem par jaunu funkcionalitāti, cenšoties automatizēt koda apkopošanu un testēšanu. Gadījumos, kad nepieciešama cilvēka iejaukšanās, ieteicams samazināt informācijas starpnieku skaitu.
Vides īstenošana: Nepieciešams nodrošināt vienotu darba vidi versiju kontrolei un testēšanas un kvalitātes novērtēšanas zaru izveidei, pieņemamībai, mērogojamībai un kļūdu izturībai.
CI/CD posmi
-
Koda rakstīšana: Izstrādātāji raksta kodu, veic manuālo testēšanu un apvieno to galvenajā projekta zarā.
-
Apkopojums: Automātiskā projekta apkopošana un testēšana tiek uzsākta ar versiju kontroles sistēmu.
-
Manuālā testēšana: Pēc CI sistēmas pārbaudes kods tiek nosūtīts testētājiem tālākai manuālai izpētei.
-
Izlaišana: Koda labojumi palielina versijas numuru, un tiek izlaista klienta produkta versija.
-
Izvietošana: Darba produkta versija automātiski tiek publicēta izstrādātāja serveros.
-
Atbalsts un uzraudzība: Izstrādātāji atbalsta produktu un analizē lietotāja pieredzi.
-
Plānošana: Pamatojoties uz atgriezenisko saiti, tiek veidoti pieprasījumi par jaunu funkcionalitāti un sagatavots uzlabojumu plāns.
CI/CD priekšrocības un trūkumi
Priekšrocības:
-
Ātra jaunas funkcionalitātes ieviešana tirgū.
-
Resursu izmaksu optimizācija, automatizējot sākotnējo testēšanu.
-
Produkta kvalitātes uzlabošana, pateicoties paralēlajai testēšanai.
Trūkumi:
-
Metodoloģijas uztvere kā universāla risinājuma var novest pie projektu sarežģīšanas.
-
Cilvēka faktora nozīme organizējot sadarbību starp projekta komandām.
CI/CD rīki
-
GitLab: Tas ir kompleksais rīks, kas ne tikai pārvalda repozitorijus, bet arī nodrošina jaudīgas funkcijas dokumentēšanai un izstrādes uzraudzībai. Lietotāji var sekot izmaiņām kodā, pārvaldīt zarus un izlaidumus, kā arī dokumentēt katru projekta aspektu tieši GitLab iekšienē.
-
Docker: Šis rīks ļauj konteinerizēt lietojumprogrammas, nodrošinot to iepakošanu un izolāciju no vides. Tas būtiski atvieglo projektu izvietošanas procesu un garantē to stabilu darbību dažādās vidēs, jo lietojumprogramma darbosies vienādi neatkarīgi no tā, kur tā tiek palaista.
-
Travis-CI: Tas ir mākoņu pakalpojums nepārtrauktai integrācijai, kas cieši integrējas ar GitHub. Tas prasa minimālu iestatīšanu un automātiski uzsāk testēšanas un apkopošanas procesus projektiem, kas glabājas GitHub.
-
Circle-CI: Vēl viens nepārtrauktas integrācijas un izvietošanas rīks, kas arī integrējas ar GitHub. Atšķirīgā iezīme Circle-CI ir tā tīmekļa saskarne, kas ļauj lietotājiem viegli sekot CI/CD procesiem un pārvaldīt projektu versijas.
-
Jenkins: Tas ir viens no populārākajiem CI/CD rīkiem, kas izceļas ar savu elastību. Ar dažādu spraudņu palīdzību Jenkins var konfigurēt praktiski jebkurus automatizācijas procesus apkopošanai, testēšanai un izvietošanai.
-
TeamCity: Šis JetBrains rīks piedāvā ērtu veidu, kā pārvaldīt CI/CD procesus. Bezmaksas versijā TeamCity nodrošina iespēju strādāt ar ierobežotu skaitu apkopošanas aģentu, kas ir piemērots maziem un vidējiem projektiem.
-
PHP Censor: Tas ir specializēts CI serveris PHP projektiem. Tam nepieciešama patstāvīga iestatīšana, taču tas nodrošina rīkus, kas ir specifiski PHP izstrādei.
-
Rex: Rīks, kas orientēts uz CI procesu automatizāciju datu centros. Rex darbojas, pamatojoties uz Perl skriptiem un ir piemērots sarežģītām vidēm, kur nepieciešama liela serveru pārvaldība.
-
Open Build Service (OBS): Šis rīks ir paredzēts CI/CD procesu automatizācijai, īpaši lietojumprogrammu izstrādes kontekstā. OBS palīdz vienkāršot programmatūras pakotņu apkopošanu un izplatīšanu dažādām operētājsistēmām.
-
Buildbot: Tā ir sistēma, kas ļauj elastīgi konfigurēt apkopošanas un testēšanas procesus. Tā ir uzrakstīta Python valodā un nodrošina jaudīgas iespējas CI/CD procesu pielāgošanai atbilstoši projekta individuālajām prasībām.
Secinājums
CI/CD ir jaudīgs mūsdienu programmatūras izstrādes rīks, kas var ievērojami paātrināt produkta nonākšanu tirgū un uzlabot tā kvalitāti, taču prasa pareizu pielietojumu un izpratni par tā principiem un ierobežojumiem.