Ukuvela kweCI kwiqela lophuhliso lweselula

Namhlanje, uninzi lweemveliso zesoftware ziphuhliswa ngokwamaqela. Iimeko zokuphuhliswa kweqela eliphumelelayo zinokumelwa ngendlela yomzobo olula.

Ukuvela kweCI kwiqela lophuhliso lweselula

Nje ukuba uyibhale ikhowudi yakho, kufuneka uqiniseke ukuba:

  1. Ukusebenza.
  2. Akwaphuli nantoni na, kuquka nekhowudi eyabhalwa ngabalingane bakho.

Ukuba zombini iimeko zidibene, ngoko usendleleni eya empumelelweni. Ukujonga ngokulula le miqathango kwaye singaphambuki kwindlela enenzuzo, size ne-Continuous Integration.

I-CI yindlela yokusebenza apho udibanisa ikhowudi yakho kwikhowudi yemveliso yonke rhoqo kangangoko kunokwenzeka. Kwaye awugcini nje ukudibanisa, kodwa kwakhona khangela ukuba yonke into iyasebenza. Kuba kufuneka ujonge kakhulu kwaye rhoqo, kuyafaneleka ukuba ucinge nge-automation. Unokuyijonga yonke into ngesandla, kodwa akufanelekanga, kwaye nantsi isizathu.

  • Bantu abathandekayo. Iyure yomsebenzi wayo nayiphi na inkqubo ibiza kakhulu kuneyure yomsebenzi wayo nayiphi na iseva.
  • Abantu bayazenza iimpazamo. Ke ngoko, iimeko zinokuvela xa iimvavanyo ziqhutywa kwisebe elingalunganga okanye ukuzibophelela okungalunganga kwadityaniswa kubavavanyi.
  • Abantu bayonqena. Ngamathub’ athile, xa ndigqiba umsebenzi othile, kuphakama ingcamango: β€œYintoni enokujongwa? Ndabhala imigca emibini - yonke into isebenza! Ndicinga ukuba abanye benu nabo ngamanye amaxesha babe neengcinga ezinjalo. Kodwa kufuneka usoloko ujonga.

Indlela uHlanganiso oluqhubekayo lwaphunyezwa ngayo kwaye lwaphuhliswa kwiqela le-Avito lophuhliso lweselula, indlela abahamba ngayo ukusuka kwi-0 ukuya kwi-450 yakha ngosuku, kwaye oomatshini bokwakha bahlanganisana iiyure ze-200 ngosuku, uthi u-Nikolai Nesterov (inesterov) ngumthathi-nxaxheba kulo lonke utshintsho lwe-CI/CD yesicelo se-Android.

Ibali lisekelwe kumzekelo womyalelo we-Android, kodwa uninzi lweendlela ezisebenzayo ziyasebenza nakwi-iOS.


Ngesinye isikhathi, umntu omnye wasebenza kwiqela le-Avito Android. Ngenkcazo, akazange afune nantoni na evela ku-Continuous Integration: kwakungekho mntu ukudibanisa naye.

Kodwa isicelo siye sakhula, kwavela imisebenzi emitsha ngakumbi, kwaye iqela lakhula ngokufanelekileyo. Ngexesha elithile, lixesha lokuseka ngokusesikweni inkqubo yokudibanisa ikhowudi. Kwagqitywa ekubeni kusetyenziswe ukuhamba kweGit.

Ukuvela kweCI kwiqela lophuhliso lweselula

Ingqikelelo yokuqukuqela kweGit yaziwa kakuhle: iprojekthi inesebe elilodwa eliphuhlisayo, kwaye kuphawu ngalunye olutsha, abaphuhlisi basika isebe elahlukileyo, bazibophelele kulo, batyhale, kwaye xa befuna ukudibanisa ikhowudi yabo kwisebe lokuphuhlisa, vula isicelo sokutsala. Ukwabelana ngolwazi kunye nokuxoxa ngeendlela, sazisa ukuhlaziywa kwekhowudi, oko kukuthi, oogxa kufuneka bahlolisise kwaye baqinisekise ikhowudi yomnye nomnye.

Iitshekhi

Ukubona ikhowudi ngamehlo akho kupholile, kodwa akwanele. Ngoko ke, iitshekhi ezizenzekelayo ziyaziswa.

  • Okokuqala, sijonga Indibano ye-ARK.
  • Ezininzi Iimvavanyo zeJunit.
  • Siqwalasela ukugubungela ikhowudi, ekubeni siqhuba iimvavanyo.

Ukuqonda ukuba ezi zitshekhi kufuneka ziqhutywe njani, makhe sijonge inkqubo yophuhliso kwi-Avito.

Inokumelwa ngokucwangcisekileyo ngolu hlobo:

  • Umphuhlisi ubhala ikhowudi kwilaptop yakhe. Ungaqhuba uhlolo lokudityaniswa kanye apha - nokuba ngekhonkco lokuzibophelela, okanye ubaleke ngokulula iitshekhi ngasemva.
  • Emva kokuba umphuhlisi etyhale ikhowudi, uvula isicelo sokutsala. Ukuze ikhowudi yayo ifakwe kwisebe lokuphuhlisa, kuyimfuneko ukuba uhambe ngokuphononongwa kwekhowudi kwaye uqokelele inani elifunekayo lokuqinisekisa. Unokwenza iitshekhi kunye nokwakha apha: de kube yimpumelelo yonke yokwakha, isicelo sokutsala asinakudityaniswa.
  • Emva kokuba isicelo sokutsala sidibaniswe kwaye ikhowudi ibandakanyiwe ekuphuhliseni, unokukhetha ixesha elifanelekileyo: umzekelo, ebusuku, xa zonke iiseva zikhululekile, kwaye ziqhube iitshekhi ezininzi njengoko uthanda.

Akukho mntu wayethanda ukuqhuba iskeni kwilaptop yakhe. Xa umphuhlisi egqibile into ethile, ufuna ukuyityhala ngokukhawuleza kwaye avule isicelo sokutsala. Ukuba ngalo mzuzu ezinye iitshekhi ezide ziqalisiwe, oku akukona nje mnandi kakhulu, kodwa kunciphisa uphuhliso: ngelixa i-laptop ihlola into, akunakwenzeka ukusebenza ngokuqhelekileyo kuyo.

Sikuthande kakhulu ukuqhuba iitshekhi ebusuku, kuba kukho ixesha elininzi kunye neeseva, ungazulazula. Kodwa, ngelishwa, xa ikhowudi yenqaku iqala ukukhula, umphuhlisi unenkuthazo encinci yokulungisa iimpazamo ezifunyenwe yiCI. Ndizibambe ngamaxesha athile ndicinga xa ndijonga zonke iimpazamo ezifunyenwe kwingxelo yasekuseni endiya kuzilungisa ngenye imini kamva, kuba ngoku kukho umsebenzi omtsha opholileyo eJira endifuna ukuwuqala.

Ukuba iitshekhi zithintela isicelo sokutsalwa, ngoko kukho inkuthazo eyaneleyo, kuba kude kube yilapho izakhiwo zijika ziluhlaza, ikhowudi ayiyi kungena ekuphuhliseni, oku kuthetha ukuba umsebenzi awuyi kugqitywa.

Ngenxa yoko, sikhethe esi sicwangciso silandelayo: siqhuba ubuninzi beesethi zokuhlola ebusuku, kwaye siqalise ezona zibalulekileyo kubo kwaye, ngokubaluleke kakhulu, ezona zikhawulezayo kwisicelo sokutsala. Kodwa asiyeki apho-ngokunxuseneyo, sikhulisa isantya seetshekhi ukuze sizidlulisele kwimowudi yasebusuku ukutsala izicelo.

Ngelo xesha, zonke izakhiwo zethu zagqitywa ngokukhawuleza, ngoko ke sasibandakanya ukwakha kwe-ARK, iimvavanyo zeJunit kunye nokubalwa kwekhowudi njenge-blocker yesicelo sokutsalwa. Sayilayita, sacinga ngayo, saza sayiyeka ikhowudi kuba sasicinga ukuba asiyidingi.

Kwasithatha iintsuku ezimbini ukuseta ngokupheleleyo i-CI esisiseko (emva koku uqikelelo lwexesha luqikelelo, olufunekayo kwisikali).

Emva koko, saqala ukucinga ngakumbi - ngaba sijonga ngokuchanekileyo? Ngaba siqhuba ukwakha kwizicelo zokutsalwa ngokuchanekileyo?

Saqala ukwakha kwisibophelelo sokugqibela sesebe apho isicelo sokutsalwa savulwa. Kodwa iimvavanyo zesi sibophelelo zingabonisa kuphela ukuba ikhowudi eyabhalwa ngumphuhlisi iyasebenza. Kodwa azibonisi ukuba akazange aphule nto. Ngapha koko, kufuneka ujonge imeko yesebe lokuphuhlisa emva kokuba uphawu ludityaniswe kulo.

Ukuvela kweCI kwiqela lophuhliso lweselula

Ukwenza oku, sibhale iskripthi esilula se-bash premerge.sh:

#!/usr/bin/env bash

set -e

git fetch origin develop

git merge origin/develop

Apha lonke utshintsho lwamva nje oluvela kuphuhliso lutsalwa ngokulula kwaye ludityaniswe kwisebe langoku. Songeze iskripthi se-premerge.sh njengenyathelo lokuqala kuzo zonke izakhiwo kwaye saqala ukujonga kanye into esiyifunayo, oko kukuthi. ukudibanisa.

Kuthathe iintsuku ezintathu ukujongana nale ngxaki, ukufumana isisombululo, kwaye ubhale esi script.

Isicelo siphuhlisiwe, imisebenzi emininzi yavela, iqela lakhula, kwaye i-premerge.sh ngamanye amaxesha yaqala ukusiwisa. Utshintsho oluphikisanayo lungene luphuhlise kwaye lwaphula isakhiwo.

Umzekelo wendlela okwenzeka ngayo oku:

Ukuvela kweCI kwiqela lophuhliso lweselula

Abaphuhlisi ababini ngaxeshanye baqala ukusebenza kwiimpawu A kunye no-B. Umphuhlisi wenqaku A ufumana into engasetyenziswanga kwiprojekthi. answer() kwaye, njenge-scout yenkwenkwe elungileyo, iyayisusa. Kwangaxeshanye, umphuhlisi wenqaku B wongeza umnxeba omtsha kulo msebenzi kwisebe lakhe.

Abaphuhlisi bagqiba umsebenzi wabo kwaye bavule isicelo sokutsala ngaxeshanye. Ulwakhiwo luyaqaliswa, i-premerge.sh ijonga zombini izicelo zokutsala malunga nophuhliso lwamva nje lwelizwe- zonke iitshekhi ziluhlaza. Emva koko, isicelo sokutsala isici A sidityanisiwe, isicelo sokutsala isici B sidityanisiwe... Boom! Ukuphuhlisa ikhefu kuba ikhowudi yokuphuhlisa iqulethe umnxeba kumsebenzi ongekhoyo.

Ukuvela kweCI kwiqela lophuhliso lweselula

Xa ayiyi kuphuhlisa, kunjalo intlekele yendawo. Iqela lonke alikwazi ukuqokelela nantoni na kwaye liyingenise ukuba ivavanywe.

Kwenzekile ukuba ndihlala ndisebenza kwimisebenzi yeziseko zophuhliso: uhlalutyo, inethiwekhi, idatabase. Oko kukuthi, ndim owabhala loo misebenzi kunye neeklasi ezisetyenziswa ngabanye abaphuhlisi. Ngenxa yoku, ndiye ndazifumana ndikwiimeko ezifanayo rhoqo. Ndide ndawuxhoma lo mfanekiso ixeshana.

Ukuvela kweCI kwiqela lophuhliso lweselula

Ekubeni oku kwakungasifanelanga, saqala ukukhangela iindlela zokuthintela oku.

Indlela yokungaphuhlisi ukuphuhlisa

Inketho yokuqala: Yakha kwakhona zonke izicelo zotsalo xa uhlaziyo luphuhla. Ukuba, kumzekelo wethu, isicelo sokutsala kunye nesici A sesokuqala ukuba sibandakanywe ekuphuhliseni, isicelo sokutsala isici B siya kwakhiwa kwakhona, kwaye, ngokufanelekileyo, iitshekhi ziya kusilela ngenxa yempazamo yokudibanisa.

Ukuze uqonde ukuba oku kuya kuthatha ixesha elingakanani, qwalasela umzekelo oneePRs ezimbini. Sivula ii-PR ezimbini: ezimbini zokwakha, ii-run ezimbini zokuhlola. Emva kokuba i-PR yokuqala idibaniswe kuphuhliso, eyesibini kufuneka iphinde yakhiwe. Lilonke, iiPR ezimbini zifuna ii-run ezintathu zokutshekishwa: 2 + 1 = 3.

Ngokomgaqo, kulungile. Kodwa sijonge izibalo, kwaye imeko eqhelekileyo kwiqela lethu yayiyi-PRs eyi-10 evulekileyo, kwaye ke inani lokutshekisha liyinani lokuqhubela phambili: 10 + 9 +... + 1 = 55. Oko kukuthi, ukwamkela i-10 Ii-PRs, kufuneka uphinde wakhe amaxesha angama-55. Kwaye oku kukwimeko efanelekileyo, xa zonke iitshekhi zidlula okokuqala, xa kungekho mntu uvula isicelo esongezelelweyo sokutsala ngelixa ezi shumi elinesibini zisetyenzwa.

Yiba nomfanekiso wakho njengomthuthukisi ofuna ukuba ngowokuqala ukucofa iqhosha elithi "hlanganisa", kuba ukuba ummelwane wenza oku, kuya kufuneka ulinde de kube yonke into eyakhiwe kwakhona ... , iya kuthothisa kakhulu uphuhliso.

Indlela yesibini enokwenzeka: qokelela izicelo zokutsala emva kokuphononongwa kwekhowudi. Oko kukuthi, uvula isicelo sokutsala, uqokelele inani elifunekayo lokuvunyelwa koogxa, ulungise oko kufunekayo, uze uqalise ukwakha. Ukuba ziphumelele, isicelo sokutsalwa sidityaniswa kuphuhliso. Kule meko, akukho kuqaliswa kwakhona okongeziweyo, kodwa impendulo iyancipha kakhulu. Njengomphuhlisi, xa ndivula isicelo sokutsala, ngokukhawuleza ndifuna ukubona ukuba kuya kusebenza. Umzekelo, ukuba uvavanyo aluphumeleli, kufuneka ululungise ngokukhawuleza. Kwimeko yokwakhiwa kokulibaziseka, impendulo iyancipha, kwaye ngoko ke lonke uphuhliso. Oku akuzange kusifanele nathi.

Ngenxa yoko, kuphela ukhetho lwesithathu oluseleyo - ukukhwela ibhayisekile. Yonke ikhowudi yethu, yonke imithombo yethu igcinwe kwindawo yokugcina kwi-server ye-Bitbucket. Ngokufanelekileyo, kwafuneka siphuhlise iplagi yeBitbucket.

Ukuvela kweCI kwiqela lophuhliso lweselula

Le plugin ithathela phezulu inkqubo yokudibanisa isicelo sokutsalwa. Ukuqala kusemgangathweni: i-PR ivula, zonke iindibano ziqalisiwe, ukuhlaziywa kwekhowudi kugqityiwe. Kodwa emva kokuba uphononongo lwekhowudi lugqityiwe kwaye umphuhlisi uthatha isigqibo sokucofa "ukudibanisa", iplagin ijonga apho uphuhliso luqhutywe khona. Ukuba uphuhliso luhlaziywe emva kolwakhiwo, iplagin ayiyi kuvumela eso sicelo sokutsalwa ukuba sidityaniswe kwisebe eliphambili. Iya kuqalisa kwakhona ukwakhiwa kophuhliso lwamva nje.

Ukuvela kweCI kwiqela lophuhliso lweselula

Kumzekelo wethu ngotshintsho oluphikisanayo, ukwakhiwa okunjalo kuya kusilela ngenxa yempazamo yokudibanisa. Ngokufanelekileyo, umphuhlisi wenqaku B kuya kufuneka alungise ikhowudi, aqale ngokutsha iitshekhi, emva koko iplagin iya kusebenzisa isicelo sokutsala ngokuzenzekelayo.

Phambi kokuphumeza le plugin, silinganise i-2,7 yophononongo oluqhuba ngokwesicelo sokutsalwa. Nge-plugin bekukho ukuqaliswa kwe-3,6. Oku kwakusifanela.

Kuyafaneleka ukuba uqaphele ukuba le plugin ine-drawback: iqala kwakhona ukwakha kube kanye. Oko kukuthi, kusekho ifestile encinci apho utshintsho oluphikisanayo lunokungena ekuphuhliseni. Kodwa amathuba oku asezantsi, kwaye senze olu rhwebo phakathi kwenani lokuqalisa kunye nokubakho kokusilela. Kwiminyaka emibini yadubula kanye kuphela, ngoko ke mhlawumbi ayizange ibe lilize.

Kwasithatha iiveki ezimbini ukubhala inguqulo yokuqala ye-plugin ye-Bitbucket.

Iitshekhi ezintsha

Ngeli xesha, iqela lethu liqhubekile nokukhula. Iitshekhi ezintsha zongeziwe.

Sacinga: kutheni ukwenza iimpazamo ukuba zinokuthintelwa? Yiyo loo nto bephumeza uhlalutyo lwekhowudi emileyo. Saqala nge-lint, efakwe kwi-Android SDK. Kodwa ngelo xesha wayengazi ukuba asebenze njani nekhowudi yeKotlin nonke, kwaye sasisele sine-75% yesicelo esibhalwe eKotlin. Ke ngoko, ezakhelweyo zongezwa kwi-lint Iitshekhi ze-Android Studio.

Ukwenza oku, kuye kwafuneka senze izinto ezininzi ezigqwethekileyo: sithathe i-Android Studio, siyipakishe kwi-Docker kwaye siyiqhube kwi-CI ngemonitha ebonakalayo, ukuze icinge ukuba isebenza kwilaptop yokwenyani. Kodwa yasebenza.

Kukwalapha ngeli xesha apho saqala khona ukubhala kakhulu iimvavanyo zezixhobo kwaye iphunyeziwe uvavanyo lwesikrini. Oku kuxa umfanekiso wekhusi wereferensi uveliswa kwimboniselo encinci eyahlukileyo, kwaye uvavanyo lubandakanya ukuthatha umfanekiso wekhusi kwimboniselo kwaye uyithelekise nomgangatho othe ngqo wepixel ngepixel. Ukuba kukho ukungangqinelani, oko kuthetha ukuba uyilo aluhambanga kakuhle kwindawo ethile okanye kukho into engalunganga kwizimbo.

Kodwa iimvavanyo zesixhobo kunye novavanyo lwesikrini kufuneka luqhutywe kwizixhobo: kwii-emulators okanye kwizixhobo zokwenyani. Ukuqwalasela ukuba zininzi iimvavanyo kwaye ziqhutywa rhoqo, ifama epheleleyo iyafuneka. Ukuqala eyakho ifama kufuna umsebenzi kakhulu, ke ngoko sifumene inketho esele yenziwe-iFirebase Test Lab.

Ilebhu yoVavanyo lweFirebase

Ikhethwe ngenxa yokuba i-Firebase yimveliso kaGoogle, okuthetha ukuba kufuneka ithembeke kwaye akunakufane kwenzeke ukuba ife. Amaxabiso afanelekile: i-$ 5 ngeyure yokusebenza kwesixhobo sangempela, i-1 $ ngeyure yokusebenza kwe-emulator.

Kuthathe malunga neeveki ezintathu ukuphumeza i-Firebase Test Lab kwi-CI yethu.

Kodwa iqela laqhubeka likhula, kwaye iFirebase, ngelishwa, yaqala ukusiwisa. Ngelo xesha, wayengenayo nayiphi na i-SLA. Ngamanye amaxesha i-Firebase yasenza ukuba silinde de kube inani elifunekayo lezixhobo lisimahla kuvavanyo, kwaye khange siqalise ukuzisebenzisa kwangoko, njengoko besifuna. Ukulinda emgceni kuthathe ukuya kutsho kwisiqingatha seyure, elixesha elide kakhulu. Iimvavanyo zezixhobo zaqhutywa kwi-PR nganye, ukulibaziseka kwacotha ngokwenene uphuhliso, kwaye emva koko ibhilikhwe yenyanga yeza nesamba esijikelezayo. Ngokubanzi, kuye kwagqitywa ukuba bayeke i-Firebase kwaye basebenze ngaphakathi, kuba iqela lalikhule ngokwaneleyo.

I-Docker + Python + bash

Sithathe i-Docker, i-emulators efakwe kuyo, yabhala inkqubo elula kwiPython, ethi ngexesha elifanelekileyo iqala inani elifunekayo le-emulators kwinguqulo efanelekileyo kwaye ibamise xa kuyimfuneko. Kwaye, ewe, izikripthi ezimbalwa ze-bash - besiya kuba phi ngaphandle kwazo?

Kuthathe iiveki ezintlanu ukwenza eyethu indawo yovavanyo.

Ngenxa yoko, kwisicelo ngasinye sokutsala kwakukho uluhlu olubanzi lokuvala ukudibanisa:

  • indibano ye-ARK;
  • iimvavanyo zeJunit;
  • I-Lint;
  • Iitshekhi ze-Android Studio;
  • Iimvavanyo zezixhobo;
  • Iimvavanyo zesikrini.

Oku kuthintele ukuqhekeka okuninzi okunokwenzeka. Ngobuchwephesha yonke into yasebenza, kodwa abaphuhlisi bakhalaza ukuba ukulinda iziphumo kwakude kakhulu.

Inde kangakanani? Silayishe idatha kwi-Bitbucket kunye ne-TeamCity kwinkqubo yokuhlalutya kwaye yaqonda ukuba ixesha lokulinda eliphakathi yimizuzu engama-45. Oko kukuthi, umphuhlisi, xa evula isicelo sokutsala, ulinda kumyinge wemizuzu engama-45 kwiziphumo zokwakha. Ngokombono wam, oku kuninzi, kwaye awukwazi ukusebenza ngolo hlobo.

Ewe kunjalo, sagqiba kwelokuba sikhawulezise zonke izakhiwo zethu.

Masikhawulezise

Ukubona ukuba izakhiwo zihlala zimi emgceni, into yokuqala esiyenzayo uthenge ihardware eninzi - uphuhliso olubanzi lolona lulula. Izakhiwo ziye zayeka ukufola, kodwa ixesha lokulinda lancipha kancinci, kuba ezinye iitshekhi ngokwazo zithathe ixesha elide kakhulu.

Ukususa iitshekhi ezithatha ixesha elide

Udibaniso lwethu oluqhubekayo lunokubamba ezi ntlobo zeempazamo kunye neengxaki.

  • Andiyi. I-CI inokubamba impazamo yokuqulunqa xa into ingakhi ngenxa yeenguqu eziphikisanayo. Njengoko besenditshilo, ke akukho mntu unokuhlanganisa nantoni na, uphuhliso luyayeka, kwaye wonke umntu uyoyika.
  • Bug kwindlela yokuziphatha. Umzekelo, xa usetyenziso lwakhiwe, kodwa luyantlitheka xa ucofa iqhosha, okanye iqhosha alicinezelwa kwaphela. Oku kubi kuba ibug enjalo inokufikelela kumsebenzisi.
  • Bug kuyilo. Umzekelo, iqhosha licofa, kodwa liye lahambisa i-pixels ezili-10 ngasekhohlo.
  • Ukonyuka kwamatyala obugcisa.

Emva kokujonga kolu luhlu, siye safumanisa ukuba ngamanqaku amabini okuqala kuphela abalulekileyo. Sifuna ukubamba iingxaki ezinjalo kuqala. Iibugs kuyilo zifunyenwe kwinqanaba lokuphononongwa koyilo kwaye zinokulungiswa ngokulula ngoko. Ukujongana netyala lobugcisa kufuna inkqubo eyahlukileyo kunye nokucwangcisa, ngoko ke sagqiba ekubeni singayivavanyi kwisicelo sokutsala.

Ngokusekwe kolu lwahlulo, salushukumisa lonke uluhlu lweetshekhi. Wawela uLint kwaye yakuhlehlisa ukusungulwa kwayo ngobusuku nje: ukuze nje ivelise ingxelo yokuba zingaphi iingxaki ebezikho kwiprojekthi. Savuma ukusebenza ngokwahlukeneyo kunye netyala lobugcisa, kwaye Iitshekhi zeStudio ye-Android zayekwa ngokupheleleyo. Isitudiyo se-Android kwi-Docker sokuqhuba uhlolo sivakala sinomdla, kodwa sibangela ingxaki enkulu ekuxhaseni. Naluphi na uhlaziyo kwiinguqulelo ze-Android Studio luthetha umzabalazo kunye neebhugi ezingaqondakaliyo. Kwakunzima nokuxhasa iimvavanyo zesikrini, kuba ilayibrari yayingazinzanga kakhulu kwaye kwakukho iimpawu zobuxoki. Iimvavanyo zesikrini zisusiwe kuluhlu lokutshekisha.

Ngenxa yoko, siye sashiywa:

  • indibano ye-ARK;
  • iimvavanyo zeJunit;
  • Iimvavanyo zezixhobo.

Gradle cache ekude

Ngaphandle kweetshekhi ezinzima, yonke into yaba ngcono. Kodwa akukho mda kwimfezeko!

Isicelo sethu sasisele sahlulwe saba malunga neemodyuli zegradle ezili-150. I-cache ekude yeGradle ihlala isebenza kakuhle kule meko, ngoko sigqibe kwelokuba siyizame.

I-Gradle cache ekude yinkonzo enokugcinwa kwi-cache yokwakha i-artifacts yemisebenzi yomntu ngamnye kwiimodyuli zomntu ngamnye. I-Gradle, endaweni yokuqulunqa ikhowudi, isebenzisa i-HTTP ukunkqonkqoza kwindawo efihlakeleyo kwaye ubuze ukuba kukho umntu osele ewenzile lo msebenzi. Ukuba ewe, ikhuphela isiphumo ngokulula.

Ukubaleka iGradle cache ekude kulula kuba iGradle ibonelela ngomfanekiso weDocker. Sakwazi ukwenza oku ngeeyure ezintathu.

Ekuphela kwento ekufuneka uyenzile kukusungula iDocker kwaye ubhale umgca omnye kwiprojekthi. Kodwa nangona inokuqaliswa ngokukhawuleza, kuya kuthatha ixesha elininzi ukuba yonke into isebenze kakuhle.

Ngezantsi i-cache iphosa igrafu.

Ukuvela kweCI kwiqela lophuhliso lweselula

Ekuqaleni, ipesenti ye-cache misss yayimalunga ne-65. Emva kweeveki ezintathu, sikwazile ukunyusa eli xabiso kwi-20%. Kuye kwavela ukuba imisebenzi eqokelelwa yisicelo se-Android inokuxhomekeka okungaqhelekanga kwi-transitive, ngenxa yokuba i-Gradle iphosakele i-cache.

Ngokudibanisa i-cache, sikhawulezise kakhulu ukwakha. Kodwa ukongeza kwindibano, kukwakho novavanyo lwezixhobo, kwaye kuthatha ixesha elide. Mhlawumbi ayilulo lonke uvavanyo ekufuneka luqhutywe kwisicelo ngasinye sokutsala. Ukufumanisa, sisebenzisa uhlalutyo lwempembelelo.

Uhlalutyo lwempembelelo

Kwisicelo sokutsalwa, siqokelela i-git diff kwaye sifumane iimodyuli zeGradle ezilungisiweyo.

Ukuvela kweCI kwiqela lophuhliso lweselula

Kunengqiqo ukuqhuba kuphela iimvavanyo zezixhobo ezijonga iimodyuli ezitshintshileyo kunye nazo zonke iimodyuli ezixhomekeke kuzo. Akukho sizathu sokuqhuba iimvavanyo kwiimodyuli ezingabamelwane: ikhowudi apho ayitshintshanga kwaye akukho nto inokuphuka.

Uvavanyo lwezixhobo alulula kangako, kuba kufuneka lubekwe kwimodyuli yeSicelo somgangatho ophezulu. Sisebenzise i-heuristics kunye nohlalutyo lwe-bytecode ukuqonda ukuba yeyiphi imodyuli yovavanyo ngalunye.

Ukuphucula ukusebenza kweemvavanyo zezixhobo ukwenzela ukuba bavavanye kuphela iimodyuli ezichaphazelekayo zithatha malunga neeveki ezisibhozo.

Amanyathelo okukhawulezisa uhlolo asebenze ngempumelelo. Ukususela kwimizuzu engama-45 siye saya malunga ne-15. Sele kuqhelekile ukulinda ikota yeyure yokwakha.

Kodwa ngoku abaphuhlisi baye baqala ukukhalaza ukuba abaqondi ukuba zeziphi izakhiwo eziqaliswayo, apho zibone khona ilogi, kutheni ukwakhiwa kubomvu, luphi uvavanyo olungaphumeleli, njl.

Ukuvela kweCI kwiqela lophuhliso lweselula

Iingxaki ngempendulo zicotha uphuhliso, ngoko sizame ukubonelela ngolwazi olucacileyo noluneenkcukacha malunga nePR nganye kunye nokwakha ngokusemandleni. Saqala ngamagqabantshintshi kwi-Bitbucket ukuya kwi-PR, ebonisa ukuba yeyiphi isakhiwo esiye sahluleka kwaye kutheni, kwaye sabhala imiyalezo ekujoliswe kuyo kwi-Slack. Ekugqibeleni, senze ideshibhodi yePR yephepha kunye noluhlu lwazo zonke izakhiwo ezisebenzayo ngoku kunye nesimo sazo: ibekwe emgceni, iyasebenza, iwile okanye igqityiwe. Ungacofa kwisakhiwo kwaye ufike kwilog yayo.

Ukuvela kweCI kwiqela lophuhliso lweselula

Iiveki ezintandathu zachithwa kwingxelo eneenkcukacha.

Izicwangciso

Masiqhubele phambili kwimbali yakutshanje. Emva kokuba siwusombulule umba wengxelo, sifikelele kwinqanaba elitsha - sagqiba kwelokuba sakhe ifama yethu yokulingisa. Xa kukho iimvavanyo ezininzi kunye nabalinganisi, kunzima ukulawula. Ngenxa yoko, zonke ii-emulators zethu ziye zaya kwiqela le-k8s ezinolawulo lwezixhobo eziguquguqukayo.

Ukongeza, kukho ezinye izicwangciso.

  • Buyela uLint (kunye nolunye uhlalutyo lwe-static). Sele sisebenza kweli cala.
  • Yenza yonke into kwi-blocker yePR iimvavanyo zokuphela-to-ekupheleni kuzo zonke iinguqulelo ze-SDK.

Ngoko ke, silandele imbali yophuhliso loBumbano oluqhubekayo kwi-Avito. Ngoku ndifuna ukunika iingcebiso kwimbono enamava.

Iingcebiso

Ukuba bendinokunika icebiso nje elinye iya kuba yile:

Nceda ulumkele izikripthi zeqokobhe!

I-Bash sisixhobo esibhetyebhetye kakhulu kwaye sinamandla, kulula kakhulu kwaye kuyakhawuleza ukubhala izikripthi. Kodwa unokuwela emgibeni kunye nayo, kwaye, ngelishwa, sawela kuyo.

Yonke yaqala ngezikripthi ezilula ezazisebenza koomatshini bethu bokwakha:

#!/usr/bin/env bash
./gradlew assembleDebug

Kodwa, njengoko usazi, yonke into iyakhula kwaye ibenzima ngakumbi ngokuhamba kwexesha-masiqhube iskripthi esinye ukusuka kwesinye, masigqithise iiparamitha apho-ekugqibeleni kuye kwafuneka sibhale umsebenzi omisela ukuba leliphi inqanaba le-bash nesting esikuyo ngoku ukuze. ukufaka izicaphulo eziyimfuneko, ukuqalisa konke.

Ukuvela kweCI kwiqela lophuhliso lweselula

Unokucinga ngeendleko zabasebenzi zokuphuhliswa kwezikripthi ezinjalo. Ndikucebisa ukuba ungangeni kulo mgibe.

Yintoni enokutshintshwa?

  • Naluphi na ulwimi lokubhala. Bhalela ku I-Python okanye i-Kotlin Script iluncedo ngakumbi kuba ludweliso lwenkqubo, hayi izikripthi.
  • Okanye chaza yonke ingqiqo yokwakha kwifom Imisebenzi yomgangatho oqhelekileyo kwiprojekthi yakho.

Sigqibe kwelokuba sikhethe ukhetho lwesibini, kwaye ngoku sicima ngokucwangcisiweyo zonke izikripthi ze-bash kwaye sibhala imisebenzi emininzi yesiko.

Ingcebiso #2: Gcina isiseko kwikhowudi.

Kuyafaneleka xa i-Continuous Integration setting igcinwa kungekhona kwi-interface ye-UI ye-Jenkins okanye i-TeamCity, njl., kodwa ngendlela yeefayile zetekisi ngqo kwindawo yokugcina iprojekthi. Oku kunika uguqulelo. Akuyi kuba nzima ukubuyisela umva okanye ukwakha ikhowudi kwelinye isebe.

Izikripthi zinokugcinwa kwiprojekthi. Yintoni onokuyenza ngokusingqongileyo?

Ingcebiso #3: I-Docker inokunceda ngokusingqongileyo.

Ngokuqinisekileyo iya kunceda abaphuhlisi be-Android; i-iOS ayinayo okwangoku, ngelishwa.

Lo ngumzekelo wefayile yedocker elula equlethe i-jdk kunye ne-android-sdk:

FROM openjdk:8

ENV SDK_URL="https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip" 
    ANDROID_HOME="/usr/local/android-sdk" 
    ANDROID_VERSION=26 
    ANDROID_BUILD_TOOLS_VERSION=26.0.2

# Download Android SDK
RUN mkdir "$ANDROID_HOME" .android 
    && cd "$ANDROID_HOME" 
    && curl -o sdk.zip $SDK_URL 
    && unzip sdk.zip 
    && rm sdk.zip 
    && yes | $ANDROID_HOME/tools/bin/sdkmanager --licenses

# Install Android Build Tool and Libraries
RUN $ANDROID_HOME/tools/bin/sdkmanager --update
RUN $ANDROID_HOME/tools/bin/sdkmanager "build-tools;${ANDROID_BUILD_TOOLS_VERSION}" 
    "platforms;android-${ANDROID_VERSION}" 
    "platform-tools"

RUN mkdir /application
WORKDIR /application

Emva kokubhala le fayile yeDocker (ndiya kukuxelela imfihlo, akunyanzelekanga ukuba uyibhale, kodwa yitsale nje sele yenziwe kwiGitHub) kwaye uhlanganise umfanekiso, ufumana umatshini obonakalayo apho unokwakha khona isicelo. kwaye uqhube iimvavanyo zeJunit.

Ezona zizathu zimbini zokuba kutheni le nto isengqiqweni kukwaleka kunye nokuphinda-phinda. Usebenzisa i-docker, unokunyusa ngokukhawuleza ishumi elinesibini leearhente zokwakha eziya kuba nemeko efana ncam nale yangaphambili. Oku kwenza ubomi beenjineli zeCI bube lula kakhulu. Kulula kakhulu ukutyhala i-android-sdk kwi-docker, kodwa ngee-emulators kunzima ngakumbi: kuya kufuneka usebenze kancinci (okanye ukhuphele egqityiweyo kwi-GitHub kwakhona).

I-Tip No. 4: ungakulibali ukuba ukuhlolwa akwenziwanga ngenxa yokuhlolwa, kodwa kubantu.

Ngokukhawuleza kwaye, okona kubaluleke kakhulu, ingxelo ecacileyo ibaluleke kakhulu kubaphuhlisi: yintoni eyaphukileyo, yintoni uvavanyo olungaphumeleliyo, ndingayibona phi i-buildlog.

Icebiso #5: Yiba pragmatic xa uphuhlisa uHlanganiso oluqhubekayo.

Qonda ngokucacileyo ukuba zeziphi iintlobo zeempazamo ofuna ukuzithintela, zingakanani izixhobo, ixesha, kunye nexesha lekhompyuter ozimisele ukulichitha. Iitshekhi ezithatha ixesha elide, umzekelo, zinokumiswa ngobusuku. Kwaye abo babamba iimpazamo ezingabalulekanga kakhulu kufuneka bayeke ngokupheleleyo.

Ingcebiso #6: Sebenzisa izixhobo esele zenziwe.

Kukho iinkampani ezininzi ngoku ezibonelela ngelifu CI.

Ukuvela kweCI kwiqela lophuhliso lweselula

Esi sisisombululo esihle kumaqela amancinci. Awudingi kuxhasa nantoni na, hlawula imali encinci, yakha isicelo sakho kwaye uqhube novavanyo lwezixhobo.

Ingcebiso #7: Kwiqela elikhulu, izisombululo zangaphakathi zinenzuzo ngakumbi.

Kodwa kungekudala, njengoko iqela likhula, izisombululo zangaphakathi ziya kuba nenzuzo ngakumbi. Inye ingxaki ngezi zigqibo. Kukho umthetho wokunciphisa imbuyekezo kuqoqosho: kuyo nayiphi na iprojekthi, uphuculo ngalunye olulandelayo lunzima ngakumbi kwaye lufuna utyalo-mali oluthe kratya.

I-Economics ichaza ubomi bethu bonke, kubandakanywa noManyano oluqhubekayo. Ndakhe ishedyuli yeendleko zabasebenzi kwinqanaba ngalinye lophuhliso loManyano lwethu oluqhubekayo.

Ukuvela kweCI kwiqela lophuhliso lweselula

Kucacile ukuba naluphi na uphuculo luya lusiba nzima ngakumbi. Ukujonga le grafu, unokuqonda ukuba uHlanganiso oluqhubekayo lufuna ukuphuhliswa ngokuhambelana nokukhula kobukhulu beqela. Kwiqela labantu ababini, ukuchitha iintsuku ezingama-50 ekuphuhliseni ifama ye-emulator yangaphakathi ngumbono ophakathi. Kodwa kwangaxeshanye, kwiqela elikhulu, ukungenzi ukuHlanganisa ngokuqhubekayo kuyo yonke into nayo ingcamango embi, kuba iingxaki zokudibanisa, ukulungisa unxibelelwano, njl. kuya kuthatha ixesha elingakumbi.

Saqala ngombono wokuba i-automation iyafuneka kuba abantu bayabiza, bayazenza iimpazamo kwaye bayonqena. Kodwa abantu bayazenzekela. Ngoko ke, zonke iingxaki ezifanayo zisebenza kwi-automation.

  • Ukuzenzela kuyabiza. Khumbula ishedyuli yomsebenzi.
  • Xa kuziwa kwi-automation, abantu bayazenza iimpazamo.
  • Ngamanye amaxesha ukonqena kakhulu ukwenza i-automate, kuba yonke into isebenza ngolo hlobo. Kutheni uphucula nantoni na enye, kutheni konke oku kuHlanganisa okuQhubekayo?

Kodwa ndinezibalo: iimpazamo zibanjwe kwi-20% yeendibano. Kwaye oku akubangelwa kukuba abaphuhlisi bethu babhala ikhowudi kakubi. Oku kungenxa yokuba abaphuhlisi baqinisekile ukuba ukuba benza impazamo ethile, ayizukuphelela ekuphuhliseni, iya kubanjwa ziitshekhi ezizenzekelayo. Ngokufanelekileyo, abaphuhlisi banokuchitha ixesha elininzi lokubhala ikhowudi kunye nezinto ezinomdla, kunokuba baqhube kwaye bavavanye into ethile kwindawo.

Ziqhelise ukuHlanganisa ngokuqhubekayo. Kodwa ngokumodareyitha.

Ngendlela, u-Nikolai Nesterov akanikeli nje kuphela iingxelo ezinkulu, kodwa ilungu lekomiti yenkqubo Ii-AppsConf kwaye unceda abanye ukuba bakulungiselele iintetho ezinentsingiselo. Ukugqibelela kunye nokuba luncedo kweprogram yenkomfa elandelayo kunokuvavanywa ngezihloko kwi ishedyuli. Kwaye ngeenkcukacha, yiza kwi-Infospace ngo-Epreli 22-23.

umthombo: www.habr.com

Yongeza izimvo