Horumarka CI ee kooxda horumarinta mobilada

Maanta, inta badan alaabada software-ka waxaa lagu soo saaray kooxo. Shuruudaha horumarka kooxda ee guuleysta waxaa lagu matali karaa qaab jaantus fudud.

Horumarka CI ee kooxda horumarinta mobilada

Markaad qorto koodkaaga, waxaad u baahan tahay inaad hubiso:

  1. Waxay shaqaysaa.
  2. Waxba ma jabiyo, oo ay ku jiraan koodka asxaabtaada ay qoreen.

Haddii labada shuruudood la buuxiyo, markaa waxaad ku socotaa waddadii guusha. Si aad si fudud u hubiso shuruudahan oo aanad uga leexan dariiqa faa'iidada leh, waxaan la nimid Is-dhexgalka Joogtada ah.

CI waa socodka shaqada halkaas oo aad ku dhex geliso koodka koodka guud ee alaabta inta badan ee suurtogalka ah. Oo ma aha oo kaliya inaad is dhexgasho, laakiin sidoo kale si joogto ah u hubi in wax walba ay shaqeynayaan. Maadaama aad u baahan tahay inaad hubiso wax badan iyo marar badan, waxaa habboon in aad ka fikirto otomaatiga. Wax walba waxaad ku hubin kartaa gacanta, laakiin waa inaadan hubin, waana tan sababta.

  • Dadyow qaali ah. Saacadda shaqada ee barnaamije kasta ayaa ka qaalisan saacad shaqo server kasta.
  • Dadku way qaldamaan. Sidaa darteed, xaalado ayaa iman kara marka imtixaannada lagu sameeyo laan khaldan ama khaladka khaladka ah loo ururiyo tijaabiyaasha.
  • Dadku waa caajisnimo. Marba marka ka dambaysa, marka aan dhammeeyo hawl, waxaa soo ifbaxaya feker: "Maxaa jira si loo hubiyo? Waxaan qoray laba sadar - wax walba way shaqeeyaan! Waxaan filayaa in qaarkiin ay sidoo kale mararka qaarkood leeyihiin fikrado noocaas ah. Laakiin waa in aad mar walba hubisaa.

Sida Is-dhexgalka Joogtada ah loo hirgeliyay loona horumariyay kooxda horumarinta mobilada ee Avito, sida ay uga soo baxeen 0 ilaa 450 dhismo maalintii, iyo in mashiinada dhisaan ay kulmaan 200 saacadood maalintii, ayuu yidhi Nikolai Nesterov (nnesterov) waa ka qaybgale dhammaan isbeddellada kobcinta ee codsiga CI/CD Android.

Sheekadu waxay ku salaysan tahay tusaalaha amarka Android, laakiin badi hababka ayaa sidoo kale lagu dabaqi karaa iOS.


Mar, hal qof ayaa ka shaqeeyay kooxda Avito Android. Qeexitaan ahaan, uma baahna wax ka mid ah Is-dhexgalka Joogtada ah: ma jirin cid la mid ah.

Laakiin codsigu wuu koray, hawlo badan oo cusub ayaa soo muuqday, kooxduna sidaas ayay u kortay. Mar marka qaar, waxa la joogaa wakhtigii si rasmi ah loo dhisi lahaa habka is dhexgalka kood. Waxaa la go'aamiyay in la isticmaalo socodka Git.

Horumarka CI ee kooxda horumarinta mobilada

Fikradda socodka Git waa mid si fiican loo yaqaan: mashruucu wuxuu leeyahay hal laan horumarinta caadiga ah, iyo sifo kasta oo cusub, horumariyayaashu waxay gooyaan laan gooni ah, u go'an, riixaan, iyo marka ay rabaan inay ku daraan koodka laanta horumarinta, fur a jiid codsi. Si aan u wadaagno aqoonta oo aan uga doodno hababka, waxaan soo bandhignay dib u eegista code, taas oo ah, asxaabtu waa inay hubiyaan oo ay xaqiijiyaan midba midka kale koodkiisa.

Hubinta

In kood lagu arko indhahaaga waa qabow, laakiin kuma filna. Sidaa darteed, hubinta tooska ah ayaa la bilaabayaa.

  • Marka hore, waan hubineynaa Golaha ARK.
  • Waxbadan Imtixaanada junit.
  • Waxaan tixgelineynaa daboolida koodka, maadaama aan wadno imtixaanno.

Si aad u fahamto sida jeegagaan loo maamulayo, aan eegno habka horumarinta ee Avito.

Waxa loo matali karaa qaab qaabaysan sidatan:

  • Horumariye wuxuu kood ku qoraa laptopkiisa. Waxaad halkan ku samayn kartaa jeegaga is dhexgalka - ama adiga oo wata jillaab, ama si fudud u socodsii jeegaga gadaasha.
  • Ka dib markii horumariyuhu riixo koodka, wuxuu furayaa codsi jiid. Si koodkiisa loogu daro laanta horumarinta, waxaa lagama maarmaan ah in la maro dib-u-eegis code oo la ururiyo tirada xaqiijinta ee loo baahan yahay. Waxaad awood u siin kartaa jeegag iyo dhismo halkan: ilaa dhammaan dhismayaashu guulaystaan, codsiga jiidista lama midoobi karo.
  • Ka dib marka codsiga jiidista la isku daro oo koodhka lagu daro horumarinta, waxaad dooran kartaa wakhti ku habboon: tusaale ahaan, habeenkii, marka dhammaan server-yada ay xor yihiin, oo aad ku shubto jeegag badan oo aad rabto.

Qofna ma jeclayn ku socodsiinta sawirada laptop-ka. Marka horumariyuhu dhammeeyo sifada, wuxuu rabaa inuu si dhakhso ah u riixo oo u furo codsi jiid. Haddii xilligan la joogo qaar ka mid ah jeegaga dheer ayaa la bilaabay, tani ma aha oo kaliya mid aad u faraxsan, laakiin sidoo kale waxay hoos u dhigtaa horumarka: inta uu laptop-ku hubinayo shay, suurtagal maaha in si caadi ah loogu shaqeeyo.

Waxaan runtii jecleysanay inaan wadno jeegaga habeenkii, sababtoo ah waxaa jira waqti badan iyo adeegayaal, waad dhex wareegi kartaa. Laakiin, nasiib daro, marka koodhka sifada uu horumariyo, horumariyuhu waxa uu leeyahay dhiirigelin aad u yar si uu u hagaajiyo khaladaadka ay CI heshay. Mar mar ayaan isqabtay anigoo ku fikiraya markaan eegay dhammaan khaladaadka laga helay warbixinta subaxii inaan dib u hagaajin doono maalin ka dib, sababtoo ah hadda waxaa Jira hawl cusub oo qabow oo aan rabo inaan bilaabo.

Haddii jeegaggu xannibo codsiga jiidista, markaa waxaa jira dhiirigelin ku filan, sababtoo ah ilaa dhismooyinku cagaar noqdaan, koodhka ma horumarin doono, taas oo macnaheedu yahay in hawsha aan la dhamaystirin.

Natiijo ahaan, waxaan dooranay istaraatiijiyadan soo socota: waxaan wadnaa hubinta ugu badan ee suurtogalka ah habeenkii, waxaanan bilownaa kuwa ugu muhiimsan iyo, ugu muhiimsan, kuwa ugu dhaqsaha badan ee codsiga jiidashada. Laakiin halkaas kuma joogsanno-marka la barbar dhigo, waxaan wanaajinaa xawaaraha hubinta si aan uga wareejinno qaabka habeenkii si aan u jiidno jeegaga codsiga.

Waqtigaas, dhammaan dhismayaasheena si dhakhso leh ayaa loo dhammaystiray, markaa waxaan si fudud ugu darnay dhismaha ARK, imtixaannada Junit iyo xisaabinta koodhka sida xannibaadda codsiga jiidista. Waanu shidnay, ka fikirnay, oo aanu ka tagno caynsanaanta koodka sababtoo ah waxaan u malaynay inaanan u baahnayn.

Waxay nagu qaadatay laba maalmood inaan si buuxda u dejinno CI-ga aasaasiga ah (intan ka dib qiyaasta wakhtiga waa qiyaas, loo baahan yahay miisaanka).

Intaa ka dib, waxaan bilownay inaan sii fikirno - xitaa ma si sax ah ayaan u hubineynaa? Si sax ah miyaynu u wadnaa dhisitaanka codsiyada jiidista?

Waxaan bilownay dhismihii ballantii ugu dambeysay ee laanta laga furay codsiga jiidista. Laakiin tijaabooyinka ballan-qaadkan waxay tusi karaan oo keliya in koodka horumariyuhu qoray uu shaqeeyo. Laakiin ma caddayn in aanu waxba jabin. Dhab ahaantii, waxaad u baahan tahay inaad hubiso xaaladda laanta horumarinta ka dib marka sifo lagu daro.

Horumarka CI ee kooxda horumarinta mobilada

Si tan loo sameeyo, waxaan ku qornay qoraal bash fudud horre.sh:

#!/usr/bin/env bash

set -e

git fetch origin develop

git merge origin/develop

Halkan dhammaan isbeddellada ugu dambeeyay ee horumarinta ayaa si fudud kor loogu qaadayaa oo lagu daray laanta hadda jirta. Waxaan ku darnay qoraalka premerge.sh oo ah talaabadii ugu horeysay ee dhismooyinka oo dhan waxaana bilownay inaan hubino sida saxda ah ee aan rabno, taasi waa is-dhexgalka.

Waxay qaadatay saddex maalmood in la meeleeyo dhibaatada, xal loo helo, oo la qoro qoraalkan.

Codsiga waa la sameeyay, hawlo badan ayaa soo muuqday, kooxda ayaa kortay, premerge.sh ayaa mararka qaarkood bilaabay inuu hoos noo dhigo. Horumarintu waxay lahayd isbedelo is khilaafaya oo jabiyay dhismihii.

Tusaale sida tani u dhacdo:

Horumarka CI ee kooxda horumarinta mobilada

Laba horumariye ayaa isku mar bilaabaya inay ku shaqeeyaan astaamaha A iyo B answer() iyo, sida wiil wanaagsan oo indha indheeya, ka saartaa. Isla mar ahaantaana, horumariyaha qaabka B wuxuu ku darayaa wicitaan cusub shaqadan laantiisa.

Horumariyayaashu waxay dhammeeyaan shaqadooda waxayna furaan codsi jiid isku mar. Dhismayaasha waa la bilaabay, premerge.sh waxay hubisaa labadaba codsiyada jiidashada ee ku saabsan gobolka horumaray ee u dambeeyay - dhammaan jeegaggu waa cagaar. Taas ka dib, codsiga jiidashada ee qaabka A waa la isku daray, codsiga jiidashada ee qaabka B waa la isku daray... Boom! Samee nasasho sababtoo ah koodka horumarku waxa uu ka kooban yahay wacitaanka shaqo aan jirin.

Horumarka CI ee kooxda horumarinta mobilada

Marka aanay horumar samaynayn, waa masiibada deegaanka. Kooxda oo dhami waxba ma ururin karaan oo u soo gudbin karaan imtixaan.

Waxaa dhacday in aan inta badan ka shaqeeyay hawlaha kaabayaasha: falanqaynta, network, database. Taasi waa, waa aniga kan qoray shaqooyinkaas iyo fasallada ay horumariyeyaasha kale isticmaalaan. Sababtaas awgeed, waxaan isku arkay xaalado la mid ah marar badan. Xataa sawirkan in muddo ah ayaan sudhay.

Horumarka CI ee kooxda horumarinta mobilada

Mar haddii ay taasi nagu qanci wayday, waxa aanu bilownay in aanu sahamno fursadaha ku saabsan sidii looga hortagi lahaa.

Sida aan loo jabin horumarinta

Doorashada kowaad: dib u dhis dhammaan codsiyada jiidashada marka la cusboonaysiinayo horumarinta. Haddii, tusaale ahaan, codsiga jiidista leh sifada A uu yahay kan ugu horreeya ee lagu daro horumarinta, codsiga jiidista ee qaabka B ayaa dib loo dhisi doonaa, sidaas awgeed, jeegaggu wuu ku guuldareysan doonaa sababtoo ah qalad ururin.

Si aad u fahamto inta ay tani qaadan doonto, tixgeli tusaale laba PRs ah. Waxaan furnaa laba PRs: laba dhismo, laba jeeg oo jeeg ah. Ka dib markii PR-da ugu horreysa la isku daro si loo horumariyo, kan labaad wuxuu u baahan yahay in dib loo dhiso. Wadar ahaan, laba PRs waxay u baahan yihiin saddex jeer oo jeeg ah: 2 + 1 = 3.

Mabda 'ahaan, way fiicantahay. Laakiin waxaan eegnay tirakoobka, iyo xaaladda caadiga ah ee kooxdeena waxay ahayd 10 furan PRs, ka dibna tirada jeeggu waa wadarta horumarka: 10 + 9 +... + 1 = 55. Taasi waa, in la aqbalo 10 PRs, waxaad u baahan tahay inaad dib u dhisto 55 jeer. Tanina waxay ku jirtaa xaalad ku habboon, marka dhammaan jeegaggu ay gudbaan marka ugu horreysa, marka qofna uusan furin codsi jiidid dheeraad ah inta daraasiinkan la farsameynayo.

Bal qiyaas naftaada sida horumariye u baahan inuu noqdo kan ugu horreeya ee gujinaya badhanka "isku-dhafka", sababtoo ah haddii derisku sameeyo tan, markaa waa inaad sugto ilaa dhammaan dhismooyinku mar kale soo baxaan ... Maya, taasi ma shaqeyn doonto. , waxay si dhab ah u dhimi doontaa horumarka.

Habka labaad ee suurtogalka ah: aruuri codsiyada jiidida kadib dib u eegista kood. Taasi waa, waxaad furaysaa codsi jiid, ururin tirada oggolaanshaha loo baahan yahay ee asxaabta, sax waxa loo baahan yahay, ka dibna bilaw dhismooyinka. Haddii ay guulaysteen, codsiga jiidista ayaa la isku daray si loo horumariyo. Xaaladdan oo kale, ma jiraan dib-u-bilaabid dheeraad ah, laakiin jawaab celinta si weyn ayaa loo dhimay. Horumariye ahaan, markaan furo codsiga jiidista, waxaan isla markiiba rabaa inaan arko haddii ay shaqaynayso. Tusaale ahaan, haddii imtixaanku guuldareysto, waxaad u baahan tahay inaad si degdeg ah u hagaajiso. Xaaladda dib-u-dhiska, ra'yi-celinta ayaa hoos u dhacda, sidaas darteed dhammaan horumarka. Middaani sidoo kale naguma habboona.

Natiijo ahaan, kaliya ikhtiyaarka saddexaad ayaa hadhay - baaskiil. Dhammaan koodkayaga, dhammaan ilahayada waxa lagu kaydiyaa kaydka server-ka Bitbucket. Sidaa awgeed, waa in aan samayno plugin loogu talagalay Bitbucket.

Horumarka CI ee kooxda horumarinta mobilada

Plugin Tani waxay meesha ka saaraysaa codsiga jiidashada habka isku darka. Bilawgu waa halbeeg: PR waa furan tahay, dhammaan shirarka waa la bilaabay, dib-u-eegis code waa la dhammaystiray. Laakin ka dib markii dib u eegista kood la dhammeeyo oo horumariyuhu go'aansado inuu gujiyo "isku darka", hubinta plugin ee ka soo horjeeda waxay sheegaysaa in jeegaga la sameeyay. Haddii horumarka la cusboonaysiiyay ka dib dhismayaashii, pluginku ma oggolaan doono in codsiga jiidista noocan oo kale ah lagu daro laanta ugu weyn. Waxay si fudud dib u bilaabi doontaa dhismayaashii horumarkii dhawaa.

Horumarka CI ee kooxda horumarinta mobilada

Tusaalahayaga isbeddelada is khilaafaya, dhismooyinkan oo kale way fashilmi doonaan sababtoo ah khalad la soo ururiyey. Sidaas awgeed, horumariyaha sifada B waa inuu saxaa koodhka, dib u bilaabo jeegaga, ka dibna pluginku wuxuu si toos ah u codsan doonaa codsiga jiidista.

Kahor intaanan hirgelin plugingan, waxaan celcelis ahaan ku celinay 2,7 dib u eegis codsi kasta. Iyada oo plugin ah waxaa jiray 3,6 bilaabay. Tani way nagu habboonaatay.

Waxaa xusid mudan in plugin-kani uu leeyahay dib-u-dhac: kaliya wuxuu dib u bilaabayaa dhismaha hal mar. Taasi waa, waxaa weli jirta daaqad yar oo ay ka soo geli karaan isbedello iska soo horjeeda. Laakiin suurtogalnimada tani waa mid yar, waxaanan samaynay isweydaarsigan inta u dhaxaysa tirada bilawga iyo suurtagalnimada guuldarada. Laba sano gudahood hal mar oo kaliya ayaa la eryay, markaa malaha wax aan waxba tarayn ma ahayn.

Waxay nagu qaadatay laba toddobaad inaan qorno nooca ugu horreeya ee plugin Bitbucket.

Jeegaga cusub

Dhanka kale, kooxdayadu waxay sii wadeen inay koraan. Jeegag cusub ayaa lagu daray

Waxaan u maleynay: maxaa qaladaad u sameynaya haddii laga hortagi karo? Waana sababta ay u hirgeliyeen falanqaynta code taagan. Waxaan ku bilownay lint, kaas oo ku jira Android SDK. Laakiin wakhtigaas ma uu garanayn sida loo isticmaalo code Kotlin oo dhan, oo waxaan horeba 75% codsiga ku qoran Kotlin. Sidaa darteed, kuwa la dhisay ayaa lagu daray lint Android Studio hubinta.

Si tan loo sameeyo, waxay ahayd inaan samayno wax badan oo qalloocan: qaado Android Studio, ku xidho Docker oo ku socodsii CI oo leh kormeeraha farsamada, si ay ugu maleyneyso inuu ku shaqeynayo laptop dhab ah. Laakiin way shaqeysay.

Waxa kale oo ay ahayd wakhtigan in aan wax badan ka qorno imtixaanada qalabaynta lana hirgeliyey baaritaanka shaashadda. Tani waa marka shaashadda tixraaca loo soo saaro muuqaal yar oo gaar ah, imtixaankuna wuxuu ka kooban yahay in laga qaado shaashadda oo la barbar dhigo heerka caadiga ah ee pixel by pixel. Haddii uu jiro khilaaf, waxay la macno tahay in qaabeynta ay meel qaldan martay ama wax khaldan yihiin qaababka.

Laakiin tijaabooyinka qalabka iyo tijaabada shaashadda waxay u baahan yihiin in lagu socodsiiyo aaladaha: emulators ama aaladaha dhabta ah. Iyadoo la tixgelinayo inay jiraan imtixaanno badan oo si joogto ah loo wado, beer dhan ayaa loo baahan yahay. Bilawga beertaada aad bay u xoog badan tahay, markaa waxaanu helnay ikhtiyaar diyaarsan - Firebase Test Lab.

Shaybaarka Imtixaanka Firebase

Waxaa loo doortay sababtoo ah Firebase waa badeecad Google ah, taasoo la macno ah inay noqoto mid la isku halayn karo oo aan laga yaabo inay weligeed dhiman doonto. Qiimaha waa macquul: $ 5 saacaddii hawlgalka qalab dhab ah, 1 $ saacaddii hawlgalka emulator ah.

Waxay qaadatay ku dhawaad ​​saddex toddobaad in la hirgeliyo Shaybaarka Imtixaanka Firebase ee CI-gayada.

Laakiin kooxdu waxay sii waday inay koraan, iyo Firebase, nasiib daro, waxay bilaabeen inay na dejiyaan. Waqtigaas, ma uusan lahayn wax SLA ah. Mararka qaarkood Firebase waxay naga dhigtay in aan sugno ilaa tirada aaladaha loo baahan yahay ay bilaash uga yihiin tijaabooyinka, oo ma bilaabin fulinta isla markiiba, sidii aan rabnay. Sugitaanka safka ayaa qaatay ilaa nus saac, taasoo ah waqti aad u dheer. Tijaabooyinka qalabka ayaa lagu sameeyay PR kasta, dib u dhac ayaa runtii hoos u dhigay horumarka, ka dibna biilka bilaha ayaa la yimid wadar wareeg ah. Guud ahaan, waxaa la go'aamiyay in laga tago Firebase oo laga shaqeeyo gudaha guriga, maadaama kooxdu ay koray ku filan.

Docker + Python + bash

Waxaan qaadnay Docker, emulators-ka buuxa, waxaanu ku qornay barnaamij fudud Python, kaas oo wakhtiga saxda ah keenaya tirada loo baahan yahay ee emulators ee nooca loo baahan yahay oo joojiya marka loo baahdo. Iyo, dabcan, dhowr qoraal oo bash ah - halkee ayaan ahaan lahayn iyaga la'aantood?

Waxay qaadatay shan toddobaad si aan u abuurno jawi imtixaan oo noo gaar ah.

Natiijadu waxay tahay, codsi kasta oo jiidis ah waxaa jiray liis badan oo isku darka xannibaya ee hubinta:

  • Golaha ARK;
  • Imtixaannada junit;
  • Lint;
  • Hubinta istuudiyaha Android;
  • Imtixaannada qalabka;
  • Tijaabooyin sawir-qaadis ah.

Tani waxay ka hortagtay burburo badan oo suurtagal ah. Farsamo ahaan wax walba way shaqeeyeen, laakiin horumariyayaashu waxay ka cawdeen in sugitaanka natiijooyinka ay aad u dheer yihiin.

Intee in le'eg ayaa aad u dheer? Waxaan ka soo rognay xogta Bitbucket iyo TeamCity nidaamka falanqaynta waxaana ogaanay taas celceliska wakhtiga sugitaanka 45 daqiiqo. Taasi waa, horumariye, marka uu furayo codsiga jiidista, wuxuu sugayaa celcelis ahaan 45 daqiiqo natiijooyinka dhismaha. Fikradayda, tani waa wax badan, mana shaqeyn kartid sidaas oo kale.

Dabcan, waxaan go'aansanay inaan dedejinno dhammaan dhismayaasheenna.

Aan dedejino

Markaan aragno in wax dhismaya ay inta badan safka ku jiraan, waxa ugu horreeya ee aan sameyno waa iibsaday qalab badan - horumarinta ballaaran ayaa ah kan ugu fudud. Dhismayaashu waxay joojiyeen safkii, laakiin wakhtiga sugitaanka ayaa yara yara yaraatay, sababtoo ah hubinta qaarkood ayaa qaatay waqti aad u dheer.

Ka saarida jeegaga waqti dheer qaata

Is-dhexgalka joogtada ah wuxuu qaban karaa noocyadan khaladaadka iyo dhibaatooyinka.

  • Aan aadin. CI waxay qaban kartaa qalad isku-dubarid marka shay aanu dhismin isbeddellada iska soo horjeeda awgeed. Sidaan horeyba u sheegay, markaa qofna waxba ma soo ururin karo, horumarkuna wuu joogsadaa, qof kastana wuu dareemayaa.
  • Cayayaanka ku jira habdhaqanka. Tusaale ahaan, marka codsiga la dhiso, laakiin shil marka aad riixdo batoon, ama badhanka aan la riixin gabi ahaanba. Tani waa xun sababtoo ah cayayaanka noocan oo kale ah ayaa gaari kara isticmaalaha.
  • Cayayaanka qaabaynta. Tusaale ahaan, badhan waa la gujiyay, laakiin wuxuu u dhaqaaqay 10 pixels dhanka bidix.
  • Kordhinta deynta farsamada.

Ka dib markaan eegno liiskan, waxaan ogaanay in kaliya labada dhibcood ee hore ay yihiin kuwo muhiim ah. Waxaan rabnaa inaan marka hore qabanno dhibaatooyinkan oo kale. Cayayaanka qaabka qaabaynta waxa lagu ogaadaa marxaladda dib u eegista naqshadaynta oo si fudud ayaa loo sixi karaa markaa. Wax ka qabashada deynta farsamo waxay u baahan tahay hannaan gaar ah iyo qorsheyn, sidaa darteed waxaan go'aansanay inaanan tijaabin codsi jiidid.

Iyada oo ku saleysan kala soocidaan, waxaan ruxnay dhammaan liiska jeegaga. Laga soo bilaabo Lint waxayna dib u dhigtay bilaabitaankiisa habeenimo: si ay u soo saarto warbixin ku saabsan inta dhib ee ka jirtay mashruuca. Waxaan ku heshiinnay inaan si gaar ah ula shaqeyno deynta farsamada, iyo Jeegaga istuudiyaha Android gabi ahaanba waa laga tagay. Istuudiyaha Android ee Docker ee socodsiinta kormeerka ayaa u muuqda mid xiiso leh, laakiin wuxuu keenaa dhibaato badan oo xagga taageerada ah. Cusbooneysi kasta oo lagu sameeyo noocyada istuudiyaha Android macnaheedu waa halgan lagula jiro kutaannada aan la fahmi karin. Sidoo kale way adkayd in la taageero imtixaanada sawir-qaadista, sababtoo ah maktabaddu aad uma xasilin oo waxaa jiray natiijooyin been ah. Tijaabooyin sawir-qaadis ah ayaa laga saaray liiska hubinta.

Natiijo ahaan, waxaa nalooga tagay:

  • Golaha ARK;
  • Imtixaannada junit;
  • Tijaabooyinka qalabka

Cache meel fog ka saar

Haddii aan la hubin, wax walbaa way fiicnaadeen. Laakiin ma jirto wax xaddidan oo kaamil ah!

Codsigayagii waxa loo kala qaybiyay ilaa 150 qaybood oo gradle. Cache fogaanta Gradle inta badan si fiican ayey u shaqeysaa kiiskan, marka waxaan go'aansanay inaan tijaabino.

Cache fogaanta Gradle waa adeeg kaydin kara dhisidda agabka hawlaha gaarka ah ee cutubyada gaarka ah. Gradle, halkii uu dhab ahaan ururin lahaa koodka, wuxuu isticmaalaa HTTP si uu u garaaco kaydka fog oo uu weydiiyo haddii qof hore u qabtay hawshan. Hadday haa tahay, waxay si fudud u soo dejisanaysaa natiijada.

Ku socodsiinta kaydinta fog ee Gradle waa sahlan tahay sababtoo ah Gradle wuxuu bixiyaa sawirka Docker. Waxaan ku guuleysanay inaan tan sameyno muddo saddex saacadood ah.

Waxa kaliya oo ay ahayd inaad sameyso waxay ahayd inaad bilowdo Docker oo aad ku qorto hal sadar mashruuca. Laakiin inkasta oo si dhakhso ah loo bilaabi karo, waxay qaadan doontaa wakhti aad u badan in wax walba si fiican u shaqeeyaan.

Hoos waxaa ku yaal garaafku wuu seegay.

Horumarka CI ee kooxda horumarinta mobilada

Bilowgii hore, boqolleyda kaydka seegay waxay ahaayeen ilaa 65. Saddex toddobaad ka dib, waxaan ku guuleysanay inaan kor u qaadno qiimahan ilaa 20%. Waxaa soo baxday in hawlaha uu ururiyo codsiga Android ay leeyihiin ku-tiirsanaan la yaab leh oo ku-meel-gaar ah, taas oo ay ugu wacan tahay Gradle uu seegay kaydka.

Markaan isku xirno khasnadda, waxaan aad u dedejinnay dhismaha. Laakiin marka lagu daro isu imaatinka, waxaa sidoo kale jira tijaabooyinka qalabka, waxayna qaataan waqti dheer. Laga yaabaa in aan dhammaan imtixaanada loo baahnayn in la sameeyo codsi kasta oo jiidis ah. Si loo ogaado, waxaan isticmaalnaa falanqaynta saamaynta.

Falanqaynta saamaynta

Codsiga jiidista, waxaanu ururinnaa git diff oo aanu helna cutubyada Gradle ee la beddelay.

Horumarka CI ee kooxda horumarinta mobilada

Waxay macno samaynaysaa in la wado kaliya imtixaanada qalabaynta ee hubinaya qaybaha la beddelay iyo dhammaan cutubyada ku xidhan iyaga. Ma jirto wax faa'iido ah oo ku saabsan imtixaannada modules deriska ah: koodhka halkaas ma beddelin waxna ma jabin karo.

Tijaabada qalabku sidaas uma fududa, sababtoo ah waa inay ku jiraan qaybta Codsiga ee heerka sare ah. Waxaan isticmaalnay heuristics leh falanqaynta bytecode si aan u fahamno cutubka imtixaan kastaa ka tirsan yahay.

Dib u cusboonaysiinta hawlgalka imtixaanada qalabka si ay u tijaabiyaan oo kaliya qaybaha ku lug leh waxay qaadatay ilaa sideed toddobaad.

Tallaabooyinka lagu dedejinayo kormeerka ayaa si guul leh u shaqeeyay. Laga soo bilaabo 45 daqiiqo waxaan kor u kacnay ilaa 15. Durba waa caadi in la sugo rubuc saac dhismo.

Laakiin hadda horumariyayaashu waxay bilaabeen inay ka cawdaan inay garan waayaan dhismayaasha la bilaabayo, halka laga arki karo logga, sababta dhismuhu u casaan yahay, imtixaankii ku guuldareystay, iwm.

Horumarka CI ee kooxda horumarinta mobilada

Dhibaatooyinka ra'yi-celinta waxay hoos u dhigtaa horumarka, markaa waxaan isku daynay inaan bixinno macluumaad cad oo faahfaahsan oo ku saabsan PR kasta oo aan dhisno intii suurtagal ah. Waxaan ku bilownay faallooyin Bitbucket ku socda PR, taasoo muujineysa dhismihii fashilmay iyo sababta, oo ku qornay farriimaha la beegsaday Slack. Dhammaadkii, waxaan u abuurnay dashboard PR bogga oo wata liis dhammaan dhismooyinka hadda socda iyo xaaladdooda: saf, ordaya, burburay ama la dhammaystiray. Waxaad gujin kartaa dhismaha oo aad geli kartaa loggiisa.

Horumarka CI ee kooxda horumarinta mobilada

Lix toddobaad ayaa lagu qaatay jawaab celin faahfaahsan.

Qorshayaasha

Aan u gudubno taariikhda dhow. Markaan xalinay arrinta jawaab celinta, waxaan gaadhnay heer cusub - waxaan go'aansanay inaan dhisno beerteena ku dayda. Marka ay jiraan tijaabooyin badan iyo emulators, way adagtahay in la maareeyo. Natiijadu waxay tahay, dhammaan ku dayashadayadu waxay u guureen kooxda k8s oo leh maarayn kheyraad dabacsan.

Intaa waxaa dheer, waxaa jira qorshayaal kale.

  • Soo celi Lint (iyo falanqayn kale oo taagan). Waxaan horeyba uga shaqeyneynaa jihadan.
  • Ku orod wax walba xannibiyaha PR imtixaanada dhamaadka-ilaa-dhamaadka dhammaan noocyada SDK.

Markaa, waxaanu raadinay taariikhda horumarka is-dhexgalka joogtada ah ee Avito. Hadda waxaan rabaa inaan talo ka bixiyo aragti khibrad leh.

Golaha

Haddii aan hal talo bixin karo waxay noqon lahayd sidan:

Fadlan ka taxaddar qoraallada qolofka!

Bash waa qalab aad u dabacsan oo awood badan, aad bay ugu habboon tahay oo degdeg u tahay in la qoro qoraallada. Laakiin waxaad ku dhici kartaa dabin, iyo, nasiib daro, waan ku dhacnay.

Dhammaantood waxay ku bilowdeen qoraallo fudud oo ku shaqeeya mishiinnadayada dhismaha:

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

Laakiin, sida aad ogtahay, wax kastaa way horumaraan oo way sii adkaadaan waqti ka dib - aynu hal qoraal ka wadno mid kale, aynu ku dhaafno qaybo ka mid ah halkaas - ugu dambeyntii waxay ahayd inaan qorno hawl go'aamisa heerka buulka bash ee aan hadda ku jirno nidaamka. si aad u geliso xigashooyinka lagama maarmaanka ah, si aad u bilowdo.

Horumarka CI ee kooxda horumarinta mobilada

Waxaad qiyaasi kartaa kharashka shaqada ee horumarinta qoraallada noocaas ah. Waxaan kugula talinayaa inaadan ku dhicin dabinkan.

Maxaa lagu bedeli karaa?

  • Luuqad kasta oo qoraal ah U qor Python ama Kotlin Script aad u sahlan sababtoo ah waa barnaamij, ma aha qoraallo.
  • Ama ku qeex dhammaan caqli-galka dhismaha ee foomka Hawlaha gradle gaarka ah mashruucaaga.

Waxaan go'aansanay inaan doorano ikhtiyaarka labaad, oo hadda waxaan si nidaamsan u tirtirnay dhammaan qoraallada bash-ka waxaanan qoraynaa hawlo badan oo khaas ah.

Talo #2: Ku kaydi kaabayaasha koodka.

Way ku habboon tahay marka goobta Is-dhexgalka Joogtada ah lagu kaydiyo ma aha interface interface ee Jenkins ama TeamCity, iwm, laakiin qaabka faylalka qoraalka ah ee tooska ah ee kaydka mashruuca. Tani waxay siinaysaa versionability. Ma adkaan doonto in dib loo rogo ama lagu dhiso koodka laan kale.

Qoraallada waxaa lagu kaydin karaa mashruuc. Maxaa laga yeelayaa deegaanka?

Talo #3: Docker ayaa kaa caawin kara deegaanka.

Dhab ahaantii waxay caawin doontaa horumarinta Android; IOS ma laha mid weli, nasiib darro.

Tani waa tusaale faylka docker fudud oo ka kooban jdk iyo 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

Markaad qorto faylkan Docker (waxaan kuu sheegi doonaa sir, uma baahnid inaad qorto, laakiin kaliya ka soo jiid si diyaar ah oo laga sameeyay GitHub) oo aad soo ururiso sawirka, waxaad heleysaa mashiinka farsamada ee aad ku dhisi karto codsiga. oo samee imtixaanada Junit.

Labada sababood ee ugu waaweyn ee ay tani macno samaynayso waa scalability iyo repeatability. Isticmaalka docker, waxaad si dhakhso ah u kicin kartaa darsin wakiilada dhismaha kuwaas oo yeelan doona isla jawi la mid ah kii hore. Tani waxay ka dhigaysaa nolosha injineerada CI mid aad u fudud. Aad bay u fududahay in android-sdk lagu riixo docker, laakiin emulators-yada way ka sii adag tahay: waa inaad xoogaa ka sii adag tahay (ama ka soo dejiso GitHub kan la dhammeeyey mar kale).

Talada No. 4: ha iloobin in kormeerka aan loo sameynin kormeerka dartiis, laakiin loogu talagalay dadka.

Degdeg ah iyo, tan ugu muhiimsan, jawaab celin cad ayaa aad muhiim ugu ah horumariyeyaasha: maxaa jabay, maxaa tijaabin waayay, halkee ayaan ka arki karaa dhismaha.

Talo #5: Noqo mid dhab ah marka aad horumarinayso Is-dhexgalka Joogtada ah.

Si cad u faham noocyada khaladaadka aad rabto inaad ka hortagto, inta agab, wakhtiga, iyo wakhtiga kombuyuutarka aad diyaar u tahay inaad isticmaasho. Jeegaga wakhti dheer qaata, tusaale ahaan, waxa dib loo dhigi karaa habeen keliya. Oo kuwa iyaga ka mid ah oo aan qaban khaladaad aad muhiim u ah waa in gebi ahaanba laga tago.

Talo #6: Isticmaal qalab diyaarsan.

Waxaa jira shirkado badan oo hadda bixiya Cloud CI.

Horumarka CI ee kooxda horumarinta mobilada

Tani waa xal fiican oo loogu talagalay kooxaha yaryar. Uma baahnid inaad wax taageerto, kaliya bixi wax yar oo lacag ah, dhis codsigaaga oo xitaa samee tijaabooyinka qalabka.

Talo #7: Koox weyn, xalalka gurigu waa faa'iido badan.

Laakin hadhow ama hadhow, sida kooxdu u korto, xalalka gurigu waxay noqon doonaan faa'iido badan. Hal dhibaato ayaa ka jirta go'aamadan. Waxaa jira sharci hoos u dhigaya soo celinta dhaqaalaha: mashruuc kasta, horumar kasta oo xiga waa mid aad iyo aad u adag oo u baahan maalgashi badan iyo dheeraad ah.

Dhaqaaluhu wuxuu qeexayaa nolosheenna oo dhan, oo ay ku jirto is-dhexgalka joogtada ah. Waxaan dhisay jadwal kharashyada shaqada ee marxalad kasta oo horumarinta is-dhexgalka joogtada ah.

Horumarka CI ee kooxda horumarinta mobilada

Way caddahay in horumar kasta uu sii adkaanayo. Markaad eegto garaafkan, waxaad fahmi kartaa in isdhexgalka joogtada ah uu u baahan yahay in la horumariyo si waafaqsan kobaca tirada kooxda. Koox ka kooban laba qof, ku qaadashada 50 maalmood horumarinta beer ku dayashada gudaha waa fikrad dhexdhexaad ah. Laakiin isla mar ahaantaana, koox weyn, oo aan samaynin Is-dhexgalka Joogtada ah gabi ahaanba sidoo kale waa fikrad xun, sababtoo ah dhibaatooyinka isdhexgalka, hagaajinta isgaarsiinta, iwm. waxay qaadan doontaa xitaa waqti dheeraad ah.

Waxaan ku bilownay fikradda ah in Automation-ka loo baahan yahay sababtoo ah dadku waa qaali, waxay sameeyaan khaladaad iyo caajisnimo. Laakiin dadku sidoo kale si otomaatig ah ayey u shaqeeyaan. Sidaa darteed, dhammaan dhibaatooyinka isku mid ah ayaa khuseeya automation.

  • Automation-ku waa qaali. Xusuusnow jadwalka shaqada.
  • Marka ay timaado automation, dadku waxay sameeyaan khaladaad.
  • Mararka qaarkood aad bay caajis u tahay in si otomaatig ah loo sameeyo, sababtoo ah wax walbaa sidaas ayay u shaqeeyaan. Waa maxay sababta wax kasta oo kale loo hagaajiyo, sababta dhammaan is-dhexgalka joogtada ah?

Laakiin waxaan hayaa tirokoob: khaladaadka waxaa lagu qabtaa 20% shirarka. Tanina maaha sababtoo ah horumariyayaasheenu waxay u qoraan kood si liidata. Tani waa sababta oo ah horumariyayaashu waxay kalsooni ku qabaan in haddii ay khalad sameeyaan, aysan ku dambayn doonin horumar, waxaa lagu qaban doonaa jeegag otomaatig ah. Sidaa darteed, horumariyayaashu waxay ku qaadan karaan waqti badan qorista koodka iyo waxyaabo xiiso leh, halkii ay ka ordi lahaayeen oo ay tijaabin lahaayeen wax gudaha ah.

Ku celceli Is-dhexgalka Joogtada ah. Laakiin dhexdhexaad ah.

By habka, Nikolai Nesterov ma aha oo kaliya inuu bixiyo warbixino weyn laftiisa, laakiin sidoo kale waa xubin ka mid ah guddiga barnaamijka AppsConf waxayna ku caawiyaan dadka kale inay kuu diyaariyaan khudbado macno leh. Dhamaystirka iyo faa'iidada barnaamijka shirka soo socda waxaa lagu qiimeyn karaa mowduucyo ku jira jadwalka. Iyo faahfaahinta, kaalay Infospace Abriil 22-23.

Source: www.habr.com

Add a comment