Enye yezinkinga abathengisi be-software yemikhiqizo eminingi abavame ukubhekana nayo ukuphindwaphindwa kwamakhono onjiniyela - onjiniyela, abahloli, nabaphathi bengqalasizinda - cishe kuwo wonke amathimba. Lokhu kusebenza nakonjiniyela ababizayo - ochwepheshe emkhakheni wokuhlola umthwalo.
Esikhundleni sokwenza imisebenzi yabo eqondile nokusebenzisa ulwazi lwabo oluhlukile ukuze bakhe inqubo yokuhlola umthwalo, khetha indlela yokusebenza, amamethrikhi alungile futhi ubhale izivivinyo ezizenzakalelayo ngokuvumelana namaphrofayela omthwalo, onjiniyela ngokuvamile kufanele bakhiphe ingqalasizinda yokuhlola kusukela ekuqaleni, balungise amathuluzi okulayisha, futhi bawashumeke. ngokwabo ezinhlelweni ze-CI, bamise ukuqapha kanye nokushicilelwa kwemibiko.
Ungathola izixazululo zezinkinga zenhlangano ekuhloleni esizisebenzisa kwa-Positive Technologies in
Ingqikithi yomqondo
Umqondo wokuhlolwa komthwalo njengesevisi usikisela ikhono lokuhlanganisa amathuluzi okulayisha i-Apache JMeter, i-Yandex.Tank kanye nezinhlaka zakho zibe isistimu yokuhlanganisa eqhubekayo. Idemo izoba ngeye-GitLab CI, kodwa izimiso zivamile kuwo wonke amasistimu e-CI.
Ukuhlolwa komthwalo njengesevisi kuyisevisi ephakathi nendawo yokuhlola umthwalo. Ukuhlolwa komthwalo kwenziwa kuma-ejenti akhethekile, imiphumela ishicilelwa ngokuzenzakalelayo ku-GitLab Pages, Influx DB kanye ne-Grafana noma ezinhlelweni zokubika zokuhlola (TestRail, ReportPortal, njll.). Ukuzenzakalela kanye nokukala kusetshenziswa kalula ngangokunokwenzeka - ngokungeza nokubeka imingcele isifanekiso esivamile se-gitlab-ci.yml kuphrojekthi ye-GitLab CI.
Inzuzo yale ndlela ukuthi yonke ingqalasizinda ye-CI, ama-ejenti okulayisha, izithombe zedokhu zemithombo yomthwalo, amapayipi okuhlola, nemibiko yokushicilela kugcinwa umnyango osebenza ngokuzenzakalelayo ophakathi nendawo (onjiniyela be-DevOps), kuyilapho onjiniyela bokuhlola umthwalo bengagxila emizamweni yabo ekuthuthukisweni kokuhlolwa. kanye nokuhlaziywa kwemiphumela yabo, ngaphandle kokubhekana nezindaba zengqalasizinda.
Ukuze kube lula ukuchaza, sizocabanga ukuthi uhlelo lokusebenza oluqondiwe noma iseva ngaphansi kokuhlolwa isivele isetshenzisiwe futhi yalungiswa kusenesikhathi (imibhalo ezenzakalelayo ku-Python, SaltStack, Ansible, njll. ingasetshenziselwa lokhu). Bese wonke umqondo wokuhlolwa komthwalo njengesevisi ungena ezigabeni ezintathu: ukulungiswa, ukuhlolwa, ukushicilelwa kwemibiko. Imininingwane eyengeziwe kumdwebo (zonke izithombe ziyachofozeka):
Imiqondo eyisisekelo nezincazelo ekuhlolweni komthwalo
Lapho senza izivivinyo zomthwalo, sizama ukunamathela
I-ejenti yokulayisha - umshini we-virtual lapho uhlelo lokusebenza luzokwethulwa khona - umthombo wokulayisha (i-Apache JMeter, i-Yandex.Tank noma imojula yokulayisha ozibhala yona).
Umgomo wokuhlola (okuqondiwe) - iseva noma uhlelo lokusebenza olufakwe kuseva oluzolayishwa.
Isimo sokuhlola (indaba yokuhlola) - isethi yezinyathelo ezinepharamitha: izenzo zomsebenzisi kanye nokusabela okulindelekile kulezi zenzo, nezicelo zenethiwekhi ezigxilile nezimpendulo, kuye ngamapharamitha acacisiwe.
Iphrofayela noma uhlelo lokulayisha (iphrofayela) - v
Hlola β umbhalo onesethi enqunywe kusengaphambili yamapharamitha.
Uhlelo lokuhlola (uhlelo lokuhlola) - isethi yokuhlolwa kanye nephrofayili yomthwalo.
I-Testran (i-testrun) - ukuphindaphinda okukodwa kokuhlola okukodwa ngesimo somthwalo esigcwaliswe ngokugcwele kanye nombiko owamukelwe.
Isicelo senethiwekhi (isicelo) - Isicelo se-HTTP esithunyelwe sisuka kumenzeli siye kokuthile.
Impendulo yenethiwekhi (impendulo) - Impendulo ye-HTTP ethunyelwe isuka ekuqondisweni iye kumenzeli.
Ikhodi yokuphendula ye-HTTP (isimo sezimpendulo ze-HTTP) - ikhodi yokuphendula ejwayelekile evela kuseva yohlelo lokusebenza.
Okwenziwayo kuwumjikelezo ophelele wokuphendula isicelo. Umsebenzi ubalwa kusukela ekuqaleni kokuthumela isicelo (isicelo) kuze kube sekupheleni kokuthola impendulo (impendulo).
Isimo sokwenziwe - ukuthi kungenzeka yini ukuqedela ngempumelelo umjikelezo wempendulo yesicelo. Uma kube nephutha kulo mjikelezo, konke okwenziwayo kuthathwa njengokungaphumeleli.
Isikhathi sokuphendula (ukubambezeleka) - isikhathi kusukela ekupheleni kokuthumela isicelo (isicelo) kuya ekuqaleni kokuthola impendulo (impendulo).
Layisha amamethrikhi - izici zesevisi elayishiwe kanye ne-ejenti yomthwalo enqunywe ngesikhathi sokuhlolwa komthwalo.
Amamethrikhi ayisisekelo okulinganisa amapharamitha womthwalo
Ezinye ezisetshenziswa kakhulu futhi ezinconyiwe kumethologi
Amamethrikhi omenzeli wokulayisha
Amamethrikhi esistimu eqondiwe noma uhlelo lokusebenza oluhlolwa ngaphansi komthwalo
Inombolo I-vCPU kanye nenkumbulo RAM,
disk - izici "zensimbi" ze-ejenti yomthwalo
CPU, Imemori, ukusetshenziswa kweDiski - Amandla we-CPU, inkumbulo nokulayishwa kwediski
ohlelweni lokuhlola. Ngokuvamile kukalwa njengephesenti
amanani aphezulu atholakalayo
inethiwekhi (kwi-ejenti yokulayisha) - ukuphuma
isixhumi esibonakalayo senethiwekhi kuseva,
lapho i-ejenti yokulayisha ifakiwe.
Ivamise kukalwa ngamabhayithi ngomzuzwana (bps)
inethiwekhi(kuthagethi) - umkhawulokudonsa wesixhumi esibonakalayo senethiwekhi
kuseva eqondiwe. Ivamise kukalwa ngamabhayithi ngomzuzwana (bps)
Abasebenzisi ababonakalayo- inombolo yabasebenzisi be-virtual,
ukusebenzisa izimo zomthwalo kanye
ukulingisa izenzo zangempela zabasebenzisi
Isimo sabasebenzisi ababonakalayo, Kuphumelele/Kwehlulekile/Ingqikithi β inombolo yokuphumelela kanye
izimo ezingaphumelelanga zabasebenzisi boqobo
ngezimo zokulayisha, kanye nenani layo eliphelele.
Ngokuvamile kulindeleke ukuthi bonke abasebenzisi bakwazi ukuqedela
yonke imisebenzi yakho eshiwo kuphrofayela yokulayisha.
Noma yiliphi iphutha lizosho ukuthi umsebenzisi wangempela ngeke akwazi
xazulula inkinga yakho lapho usebenza nesistimu
Izicelo ngesekhondi (umzuzu)- inani lezicelo zenethiwekhi ngomzuzwana (noma umzuzu).
Isici esibalulekile se-ejenti yomthwalo ukuthi zingaki izicelo engazikhiqiza.
Eqinisweni, lokhu ukulingisa ukufinyelela kuhlelo lokusebenza ngabasebenzisi ababonakalayo
Izimpendulo ngesekhondi (umzuzu)
- inani lezimpendulo zenethiwekhi ngomzuzwana (noma iminithi).
Isici esibalulekile sesevisi okuqondiswe kuyo: malini
khiqiza futhi uthumele izimpendulo emibuzweni nge
i-ejenti yokulayisha
Isimo sokuphendula se-HTTP- inombolo yamakhodi empendulo ahlukene
kusuka kuseva yohlelo lokusebenza etholwe i-ejenti yokulayisha.
Isibonelo, i-200 OK isho ucingo oluyimpumelelo,
futhi 404 - ukuthi insiza ayizange itholakale
I-Latency (isikhathi sokuphendula) - isikhathi kusukela ekupheleni
ukuthumela isicelo (isicelo) ngaphambi kokuqala ukuthola impendulo (impendulo).
Ivamise ukukalwa ngama-millisecond (ms)
Isikhathi sokuphendula sokwenziwe- isikhathi sokuthengiselana okukodwa okuphelele,
ukuqedwa komjikelezo wokuphendula isicelo.
Lesi yisikhathi kusukela ekuqaleni kokuthumela isicelo (isicelo)
kuze kuphothulwe ukuthola impendulo (impendulo).
Isikhathi sokwenziwe singalinganiswa ngamasekhondi (noma amaminithi)
ngezindlela eziningana: cabangela ubuncane,
esiphezulu, isilinganiso futhi, isibonelo, i-90th percentile.
Ukufundwa okuncane nokuphezulu kudlulele
isimo sokusebenza kwesistimu.
I-percentile yamashumi ayisishiyagalolunye iyona esetshenziswa kakhulu,
njengoba kukhombisa iningi labasebenzisi,
ukusebenza kahle emngceleni wokusebenza kwesistimu
Okwenziwayo ngesekhondi (umzuzu) - inombolo ephelele
okwenziwayo ngomzuzwana (umzuzu),
okungukuthi, isicelo esikwazile ukwamukela malini futhi
cubungula izicelo bese ukhipha izimpendulo.
Eqinisweni, lokhu ukuphela kwesistimu
Isimo sokwenziwe , Kuphumelele / Kwehlulekile / Inani - inombolo
ngempumelelo, akuphumelelanga kanye nenani eliphelele lemisebenzi.
Kubasebenzisi bangempela akuphumelelanga
ukuthengiselana kuzosho ngempela
ukungakwazi ukusebenza nesistimu ngaphansi komthwalo
Layisha Umdwebo Wohlelo Lokuhlola
Umqondo wokuhlolwa komthwalo ulula kakhulu futhi uqukethe izigaba ezintathu eziyinhloko, esengizibalulile kakade: Lungiselela-Ukuhlola-Bika, okungukuthi, ukulungiselela imigomo yokuhlola nokusetha imingcele yemithombo yokulayisha, bese senza ukuhlolwa komthwalo futhi, ekugcineni, ukukhiqiza nokushicilela umbiko wokuhlola.
Amanothi ohlelo:
- U-QA.Tester uchwepheshe ekuhloleni umthamo,
- Ithagethi uhlelo lokusebenza oluqondiwe ofuna ukwazi ngalo ukuziphatha kwalo ngaphansi komthwalo.
Ukuhlelwa kwamabhizinisi, izigaba kanye nezinyathelo kumdwebo
Izigaba nezinyathelo
Kwenzakalani
Yini ekungeneni
Kuyini okukhiphayo
Lungiselela: isigaba sokulungiselela ukuhlolwa
LoadParameters
Ukusetha nokuqalisa
umsebenzisi
layisha amapharamitha,
ukukhetha kwamamethrikhi kanye
ukulungiselela uhlelo lokuhlola
(layisha iphrofayili)
Izinketho ngokwezifiso ze
ukuqaliswa kwe-ejenti yokulayisha
Uhlelo lokuhlola
Inhloso yokuhlola
VM
Ukuthunyelwa kwamafu
umshini virtual nge
izici ezidingekayo
Izilungiselelo ze-VM zomenzeli wokulayisha
Imibhalo ezenzakalelayo ye
Ukwakhiwa kwe-VM
I-VM ifakwe ngaphakathi
ifu
Umona
Ukusetha nokulungiswa kwe-OS
imvelo for
umsebenzi we-ejenti yokulayisha
Izilungiselelo zemvelo ze
i-ejenti yokulayisha
Imibhalo ezenzakalelayo ye
izilungiselelo zendawo
Imvelo elungisiwe:
I-OS, amasevisi nezinhlelo zokusebenza,
okudingekayo emsebenzini
i-ejenti yokulayisha
Ama-LoadAgents
Ukufakwa, ukumisa kanye nepharamitha
i-ejenti yokulayisha.
Noma ukulanda isithombe se-docker kusuka
umthombo wokulayisha olungiselelwe ngaphambilini
Layisha isithombe sedokha somthombo
(I-YAT, JM noma uhlaka oluzibhalele lona)
Izilungiselelo
i-ejenti yokulayisha
Setha futhi ulungile
i-ejenti yokulayisha umsebenzi
Isivivinyo: isigaba sokwenziwa kokuhlolwa komthwalo. Imithombo ngama-ejenti okulayisha asetshenziswe kumachibi ama-ejenti azinikele we-GitLab CI
Layisha
Iqala I-ejenti Yomthwalo
ngohlelo lokuhlola olukhethiwe
kanye namapharamitha wokulayisha
Izinketho Zomsebenzisi
ukuze kuqaliswe
i-ejenti yokulayisha
Uhlelo lokuhlola
Inhloso yokuhlola
Amalogi wokwenza
ukuhlolwa komthwalo
Amalogi esistimu
Amandla ezinguquko kumamethrikhi egoli kanye ne-ejenti yokulayisha
Run Agents
Ukubulawa kwe-ejenti
inqwaba yemibhalo yokuhlola
ngokuvumelana ne
layisha iphrofayili
Layisha Ukusebenzelana komenzeli
ngenhloso yokuhlola
Uhlelo lokuhlola
Inhloso yokuhlola
izingodo
Ukuqoqwa kwamalogi "aluhlaza".
ngesikhathi sokuhlolwa kokulayisha:
layisha amarekhodi omsebenzi we-ejenti,
isimo sokuhlolwa okuhlosiwe
kanye ne-VM eqhuba i-ejenti
Amalogi wokwenza
ukuhlolwa komthwalo
Amalogi esistimu
Ama-metric
Iqoqa amamethrikhi "aluhlaza" phakathi nokuhlolwa
Amandla ezinguquko kumamethrikhi egoli
kanye ne-ejenti yokulayisha
Umbiko: isigaba sokulungiselela umbiko wokuhlolwa
Generator
Ukucubungula kuqoqiwe
ukulayisha uhlelo kanye
uhlelo lokuqapha "oluhlaza"
amamethrikhi namalogi
Ukwakhiwa kombiko ku
ifomu elifundekayo lomuntu
kungenzeka ngezakhi
abahlaziyi
Amalogi wokwenza
ukuhlolwa komthwalo
Amalogi esistimu
Amandla ezinguquko kumamethrikhi
i-ejenti eqondiwe neyokulayisha
Amalogi "akuhlaza" acutshunguliwe
ngefomethi efanelekile
ukulayisha kusitoreji sangaphandle
Umbiko wokulayisha okumile,
ezifundekayo ngabantu
Shicilela
Ukushicilelwa kombiko
mayelana nomthwalo
ukuhlola kwangaphandle
isevisi
Kucutshungulwe "okuluhlaza"
izingodo ngefomethi efanelekile
ukuze kulayishwe ngaphandle
izinqolobane
Kulondolozwe ngaphandle
imibiko yokugcina ivuliwe
umthwalo, kufanelekile
ukuze kuhlaziywe abantu
Ixhuma imithombo yokulayisha kusifanekiso se-CI
Asiqhubekele engxenyeni ebonakalayo. Ngifuna ukukhombisa ukuthi kanjani kwamanye amaphrojekthi enkampanini
Okokuqala, ngosizo lonjiniyela bethu be-DevOps, sidale inqwaba yama-ejenti azinikele ku-GitLab CI ukuze senze ukuhlolwa komthwalo. Ukuze singabaphambanisi ezifanekisweni nabanye, njengamachibi omhlangano, sengeze omaka kulawa ma-ejenti,
Ungawathola kanjani amandla adingekayo ngehadiwe? Izici zama-ejenti okulayisha - inombolo eyanele ye-vCPU, i-RAM neDiski - ingabalwa ngokusekelwe eqinisweni lokuthi i-Docker, i-Python (ye-Yandex.Tank), i-ejenti ye-GitLab CI, i-Java (ye-Apache JMeter) kufanele isebenze kumenzeli. . Ku-Java ngaphansi kwe-JMeter, kuyanconywa futhi ukusebenzisa ubuncane be-RAM engu-512 MB futhi, njengomkhawulo ophezulu,
Ngakho, ngokusekelwe kokuhlangenwe nakho kwethu, sincoma ukusebenzisa okungenani ama-vCPU angu-4, 4 GB RAM, 60 GB SSD kuma-ejenti okulayisha. Ukuphuma kwekhadi lenethiwekhi kunqunywa ngokusekelwe ezidingweni zephrofayili yomthwalo.
Ngokuyinhloko sisebenzisa imithombo emibili yokulayisha - izithombe ze-Apache JMeter kanye ne-Yandex.Tank docker.
Ukuze kube lula ukusetshenziswa enkampanini yethu, ukuze abahloli bakwazi ukushintsha futhi bengeze imvelo, senze izithombe ze-docker zemithombo yokulayisha ku-GitLab CI ngokushicilelwa kwangaphakathi.
Sithathe leli fayela le-docker eliyisisekelo le-Yandex.Tank:
Dockerfile
1 | FROM direvius/yandex-tank
2 | ENTRYPOINT [""]
Futhi nge-Apache JMeter lena:
Dockerfile
1 | FROM vmarrazzo/jmeter
2 | ENTRYPOINT [""]
Ungafunda ukuthi uhlelo lwethu lokuhlanganisa oluqhubekayo lusebenza kanjani esihlokweni esithi "
Isifanekiso nepayipi
Isibonelo sesifanekiso sokwenza ukuhlolwa komthwalo siyatholakala kuphrojekthi
Isifanekiso silula kakhulu futhi sibonisa izigaba ezintathu zokuhlolwa komthwalo ezichazwe kumdwebo ongenhla: ukulungiselela, ukuhlola, nokushicilela imibiko. Unesibopho salokhu
- Isiteji
Lungiselela kufanele isetshenziselwe ukulungisa okuhlosiwe kokuhlola noma ukuhlola ukutholakala kwayo. Indawo yemithombo yokulayisha ayidingi ukulungiswa, yakhiwe kusengaphambili njengezithombe zedokhu futhi ithunyelwe endaweni yokubhalisa yedokhu: vele ucacise inguqulo oyifunayo esigabeni Sokuhlola. Kodwa ungazakha kabusha futhi wenze ezakho izithombe ezilungisiwe. - Isiteji
test esetshenziselwa ukucacisa umthombo wokulayisha, ukwenza izivivinyo, nama-artifact okuhlola esitolo. Ungakhetha noma yimuphi umthombo wokulayisha: Yandex.Tank, Apache JMeter, eyakho, noma zonke ndawonye. Ukukhubaza imithombo engadingekile, vele ubeke amazwana noma ususe umsebenzi. Amaphoyinti okungena emithombo yokulayisha:- Izimiso zokuqalisa ze-Yandex.Tank zicaciswe ku-.
/tests/yandextank.sh , - Amapharamitha wokuqalisa we-Apache JMeter acacisiwe efayeleni
./tests/jmeter.sh .
Qaphela: Isifanekiso sokucushwa somhlangano sisetshenziselwa ukusetha ukusebenzisana nesistimu ye-CI futhi akusho ukubekwa kokuhlola okunengqondo kuyo. Ngokuhlolwa, indawo yokungena icacisiwe, lapho iskripthi se-bash yokulawula sitholakala khona. Indlela yokusebenzisa izivivinyo, ukukhiqiza imibiko, kanye nemibhalo yokuhlola ngokwayo kufanele isetshenziswe ngonjiniyela be-QA. Kudemo, kuyo yomibili imithombo yokulayisha, isicelo sekhasi eliyinhloko le-Yandex sisetshenziswa njengokuhlola okulula kakhulu. Izikripthi nezinhlaka zokuhlola zikuhlu lwemibhalo
./izivivinyo . - Izimiso zokuqalisa ze-Yandex.Tank zicaciswe ku-.
- Esiteji
Umbiko udinga ukuchaza ukuthi ungayishicilela kanjani imiphumela yokuhlolwa etholwe esigabeni Sokuhlola ezindaweni zokugcina zangaphandle, isibonelo, kumakhasi e-GitLab noma amasistimu okubika akhethekile. I-GitLab Pages idinga ukuthi inkomba ye-./public ingabi nalutho futhi iqukathe okungenani ifayela elithi index.html ngemva kokuphela kokuhlola. Ungafunda ngamanuances wensizakalo ye-GitLab Pages.isixhumanisi .Izibonelo zendlela yokuthekelisa idatha:
- kusuka ku-JMeter kuya
Amakhasi we-GitLab , - kusuka ku-Yandex.Tank kuya
I-InfluxDB ne-Grafana .
Ithumela imiyalelo yokusetha:
- I-HTML statics ku
Amakhasi we-GitLab , - ku-InfluxDB bese kuthi
UGrafana .
- kusuka ku-JMeter kuya
Esibonelweni sedemo, ipayipi elinokuhlolwa komthwalo nemithombo emibili yokulayisha (ungakhubaza okungadingekile) libukeka kanje:
I-Apache JMeter ingazenzela umbiko we-HTML ngokwawo, ngakho kunenzuzo enkulu ukuwugcina kumakhasi e-GitLab usebenzisa amathuluzi ajwayelekile. Nansi indlela umbiko we-Apache JMeter obukeka ngayo:
Esibonelweni sedemo se-Yandex.Tank, uzobona kuphela
Isifingqo
Esihlokweni, ngikhulume ngomqondo "wokuhlolwa komthwalo njengesevisi" (ukuhlolwa komthwalo njengesevisi). Umqondo oyinhloko uwukusebenzisa ingqalasizinda yamachibi alungiselelwe kusengaphambili ama-ejenti okulayisha, izithombe zedokhu zemithombo yomthwalo, amasistimu okubika kanye nepayipi eliwahlanganisa ku-GitLab CI ngokusekelwe kusifanekiso esilula se-.gitlab-ci.yml (isibonelo
PS Ngifuna ukubonga kakhulu kozakwethu, u-Sergey Kurbanov no-Nikolai Yusev, ngosizo lwezobuchwepheshe ngokuqaliswa komqondo wokuhlolwa komthwalo njengenkonzo enkampanini yethu.
umbhali:
Source: www.habr.com