Evolution ea CI sehlopheng sa nts'etsopele ea mehala

Kajeno, lihlahisoa tse ngata tsa software li hlahisoa ka lihlopha. Maemo a ntlafatso ea sehlopha se atlehileng a ka emeloa ka mokhoa oa setšoantšo se bonolo.

Evolution ea CI sehlopheng sa nts'etsopele ea mehala

Hang ha u se u ngotse khoutu ea hau, u lokela ho etsa bonnete ba hore:

  1. E sebetsa.
  2. Ha e robe letho, ho kenyelletsa le khoutu eo basebetsi-'moho le uena ba e ngotseng.

Haeba maemo ka bobeli a finyelloa, joale u tseleng e lebisang katlehong. Ho hlahloba maemo ana habonolo le ho se khelohe tseleng e nang le phaello, re ile ra tla le Continuous Integration.

CI ke mokhoa oa ho sebetsa moo o kopanyang khoutu ea hau ho khoutu ea sehlahisoa ka kakaretso hangata kamoo ho ka khonehang. 'Me ha u kopane feela, empa hape u hlahlobe kamehla hore ntho e' ngoe le e 'ngoe e sebetsa. Kaha o hloka ho hlahloba haholo le hangata, ho bohlokoa ho nahana ka boiketsetso. U ka hlahloba ntho e 'ngoe le e' ngoe ka letsoho, empa ha ua lokela, 'me ke ka lebaka lena.

  • Batho ba ratehang. Hora ea mosebetsi oa moqapi ofe kapa ofe e theko e boima ho feta hora ea mosebetsi oa seva leha e le sefe.
  • Batho ba etsa liphoso. Ka hona, maemo a ka hlaha ha liteko li ne li etsoa lekaleng le fosahetseng kapa boitlamo bo fosahetseng bo ne bo bokelloa bakeng sa bahlahlobi.
  • Batho ba botsoa. Nako le nako, ha ke qeta mosebetsi o itseng, ho hlaha maikutlo a reng: “Ke eng e lokelang ho hlahlojoa? Ke ngotse mela e 'meli - tsohle lia sebetsa! Ke nahana hore ba bang ba lona le bona ka linako tse ling ba na le maikutlo a joalo. Empa u lokela ho hlahloba kamehla.

Kamoo Kopano e Tsoelang Pele e ileng ea kenngoa ts'ebetsong le ho ntlafatsoa ho sehlopha sa nts'etsopele ea mehala ea Avito, kamoo ba ileng ba tloha ho 0 ho ea ho 450 ho haha ​​​​ka letsatsi, le hore mechine e hahang e bokella lihora tsa 200 ka letsatsi, ho bolela Nikolai Nesterov (nnesterov) ke senkakarolo liphetohong tsohle tsa ho iphetola ha lintho tsa CI/CD Android application.

Pale e ipapisitse le mohlala oa taelo ea Android, empa mekhoa e mengata e sebetsa le ho iOS.


Ka nako e 'ngoe, motho a le mong o ne a sebetsa sehlopheng sa Avito Android. Ka tlhaloso, o ne a sa hloke letho ho Continuous Integration: ho ne ho se na motho ea ka kopanyang le eena.

Empa ts'ebeliso e ile ea hola, mesebetsi e mecha e ntse e eketseha, 'me sehlopha se ile sa hola ka tsela e nepahetseng. Ka nako e 'ngoe, ke nako ea ho theha mokhoa oa ho kopanya khoutu. Ho ile ha etsoa qeto ea ho sebelisa Git flow.

Evolution ea CI sehlopheng sa nts'etsopele ea mehala

Khopolo ea phallo ea Git e tsebahala haholo: morero o na le lekala le le leng le tloaelehileng la nts'etsopele, 'me bakeng sa karolo e' ngoe le e 'ngoe e ncha, bahlahisi ba khaola lekala le arohaneng, ba itlama ho lona, ​​​​ba sutumelletsa, 'me ha ba batla ho kopanya khoutu ea bona lekaleng le nts'etsopele, bula ho hula kopo. Ho arolelana tsebo le ho buisana ka mekhoa, re hlahisitse tlhahlobo ea khoutu, ke hore, basebetsi-'moho ba tlameha ho hlahloba le ho netefatsa khoutu ea e mong.

Licheke

Ho bona khoutu ka mahlo ho monate, empa ha hoa lekana. Ka hona, ho ntse ho hlahisoa licheke tsa othomathike.

  • Pele ho tsohle, re hlahloba Kopano ea ARK.
  • Boholo Liteko tsa Junit.
  • Re nahana ka tšireletso ea khoutu, kaha re ntse re matha liteko.

Ho utloisisa hore na licheke tsena li lokela ho tsamaisoa joang, a re shebeng ts'ebetso ea nts'etsopele ho Avito.

E ka emeloa ka schematically tjena:

  • Moqapi o ngola khoutu ho laptop ea hae. U ka tsamaisa licheke tsa ho kopanya hona mona - ebang ke ka hook ea boitlamo, kapa u tsamaise licheke ka morao.
  • Ka mor'a hore moqapi a sututse khoutu, o bula kopo ea ho hula. E le hore khoutu ea eona e kenyelelitsoe lekaleng la nts'etsopele, ho hlokahala hore u fete ka tlhahlobo ea khoutu le ho bokella palo e hlokahalang ea litiiso. O ka etsa hore licheke le ho aha mona: ho fihlela meaho eohle e atlehile, kopo ea ho hula e ke ke ea kopanngoa.
  • Ka mor'a hore kopo ea ho hula e kopane 'me khoutu e kenyelelitsoe ho nts'etsopele, u ka khetha nako e loketseng: mohlala, bosiu, ha lisebelisoa tsohle li lokolohile,' me u tsamaise licheke tse ngata kamoo u ratang kateng.

Ha ho motho ea neng a rata ho sebelisa li-scans ho laptop ea bona. Ha moqapi a qetile tšobotsi, o batla ho e sutumetsa ka potlako le ho bula kopo ea ho hula. Haeba ka nako ena licheke tse ling tse telele li qalisoa, sena ha se monate feela, empa hape se liehisa nts'etsopele: ha laptop e ntse e hlahloba ntho e itseng, ho ke ke ha khoneha ho sebetsa ka tloaelo ho eona.

Re ratile haholo ho tsamaisa licheke bosiu, hobane ho na le nako e ngata le li-server, u ka solla hohle. Empa, ka bomalimabe, ha khoutu ea likarolo e qala, moqapi o na le tšusumetso e fokolang ea ho lokisa liphoso tseo CI e li fumaneng. Nako le nako ke ne ke iphumana ke nahana ha ke sheba liphoso tsohle tse fumanoang tlalehong ea hoseng hore ke tla li lokisa ka letsatsi le leng hamorao, hobane hona joale ho na le mosebetsi o mocha o pholileng oa Jira oo ke batlang ho qala ho o etsa.

Haeba licheke li thibela kopo ea ho hula, joale ho na le tšusumetso e lekaneng, hobane ho fihlela lihahi li fetoha tse tala, khoutu e ke ke ea kena ho nts'etsopele, e bolelang hore mosebetsi o ke ke oa phethoa.

Ka lebaka leo, re ile ra khetha leano le latelang: re matha palo e kahodimodimo ho khoneha sete ya licheke bosiu, 'me qala tse mahlonoko tseo ho leng ho tsona' me, habohlokoa ka ho fetisisa, tse lebelo ka ho fetisisa ka kopo hula. Empa ha re emise moo - ka ho ts'oana, re ntlafatsa lebelo la licheke e le hore re li fetise ho tloha mokhoeng oa bosiu ho ea hula licheke tsa kopo.

Ka nako eo, meaho eohle ea rona e ile ea phethoa ka potlako, kahoo re ne re kenyelletsa moaho oa ARK, liteko tsa Junit le lipalo tsa tšireletso ea khoutu e le sethibelo bakeng sa kopo ea ho hula. Re ile ra e bulela, ra nahana ka eona, 'me ra tlohela ho fana ka litaba tsa khoutu hobane re ne re nahana hore ha re e hloke.

Ho re nkile matsatsi a mabeli ho theha CI ea mantlha ka botlalo (kamora mona khakanyo ea nako e hakanyetsoa, ​​e hlokahala bakeng sa sekala).

Ka mor'a moo, re ile ra qala ho nahana ka ho eketsehileng - na re ntse re hlahloba ka nepo? Na re ntse re tsamaisa likopo tsa ho hula ka nepo?

Re ile ra qala kaho holim'a boitlamo ba ho qetela ba lekala leo kopo ea ho hula e ileng ea buloa ho lona. Empa liteko tsa boitlamo bona li ka bontša feela hore khoutu eo moqapi a e ngotseng e sebetsa. Empa ha li pake hore ha aa ka a roba letho. Ebile, o hloka ho lekola boemo ba lekala la nts'etsopele ka mor'a hore karolo e kopanngoe ho eona.

Evolution ea CI sehlopheng sa nts'etsopele ea mehala

Ho etsa sena, re ngotse script e bonolo ea bash premerge.sh:

#!/usr/bin/env bash

set -e

git fetch origin develop

git merge origin/develop

Mona liphetoho tsohle tsa morao-rao tse tsoang ho nts'etsopele li huloa le ho kopanngoa lekaleng la hajoale. Re kentse script ea premerge.sh e le mohato oa pele ho lihahi tsohle mme ra qala ho lekola seo re se batlang, ke hore. kopanyo.

Ho nkile matsatsi a mararo ho tsebahatsa bothata, ho fumana tharollo, le ho ngola mongolo ona.

Kopo e ile ea ntlafatsoa, ​​​​mesebetsi e mengata ea hlaha, sehlopha sa hola, 'me ka linako tse ling premerge.sh e ile ea qala ho re nyahamisa. Develop e bile le liphetoho tse hanyetsanang tse ileng tsa senya mohaho.

Mohlala oa hore na sena se etsahala joang:

Evolution ea CI sehlopheng sa nts'etsopele ea mehala

Bahlahisi ba babeli ka nako e le 'ngoe ba qala ho sebetsa ho likarolo tsa A le B. Moetsi oa tšobotsi A o sibolla karolo e sa sebelisoeng morerong. answer() 'me, joalo ka moshemane ea molemo, oa e tlosa. Ka nako e ts'oanang, moqapi oa sebopeho sa B o eketsa mohala o mocha mosebetsing ona lekaleng la hae.

Bahlahisi ba qeta mosebetsi oa bona mme ba bula kopo ea ho hula ka nako e le 'ngoe. Mehaho e qala, premerge.sh e hlahloba likopo tse peli tsa ho hula mabapi le boemo ba morao-rao ba nts'etsopele - licheke tsohle li tala. Ka mor'a moo, kopo ea ho hula ea tšobotsi A e kopantsoe, kopo ea ho hula ea karolo ea B e kopantsoe ... Boom! Theha likhefu hobane khoutu ea nts'etsopele e na le mohala o lebisang tšebetsong e seng teng.

Evolution ea CI sehlopheng sa nts'etsopele ea mehala

Ha e sa tl'o ntlafala, ho joalo koluoa ​​ea lehae. Sehlopha sohle se ke ke sa bokella letho mme sa se romela hore se hlahlojoe.

Ho ile ha etsahala hore hangata ke sebetse mesebetsing ea litšebeletso tsa motheo: analytics, network, databases. Ke hore, ke 'na ea ngotseng mesebetsi le lihlopha tseo bahlahisi ba bang ba li sebelisang. Ka lebaka lena, ke ile ka iphumana ke le maemong a tšoanang hangata. Ke bile ke na le setšoantšo sena se leketlileng nakoana.

Evolution ea CI sehlopheng sa nts'etsopele ea mehala

Kaha sena se ne se sa re tšoanele, re ile ra qala ho hlahloba mekhoa ea ho thibela sena.

Joang hore u se ke ua senya nts'etsopele

Khetho ea pele: theha likopo tsohle tsa ho hula bocha ha ntlafatso e ntlafatsoa. Haeba, mohlaleng oa rona, kopo ea ho hula e nang le tšobotsi A ke ea pele ea ho kenyelletsoa ho nts'etsopele, kopo ea ho hula ea karolo ea B e tla tsosolosoa, 'me, ka hona, licheke li tla hlōleha ka lebaka la phoso ea ho bokella.

Ho utloisisa hore na sena se tla nka nako e kae, nahana ka mohlala o nang le li-PR tse peli. Re bula li-PR tse peli: tse peli tse hahang, licheke tse peli tsa licheke. Kamora hore PR ea pele e kopane ho nts'etsopele, ea bobeli e hloka ho hahuoa bocha. Ka kakaretso, li-PR tse peli li hloka licheke tse tharo: 2 + 1 = 3.

Ha e le hantle, ho lokile. Empa re ile ra sheba lipalo-palo, 'me boemo bo tloaelehileng sehlopheng sa rona e ne e le li-PR tse 10 tse bulehileng,' me joale palo ea licheke ke kakaretso ea tsoelo-pele: 10 + 9 +... + 1 = 55. Ke hore, ho amohela 10 PRs, o hloka ho aha makhetlo a 55. 'Me sena se maemong a matle, ha licheke tsohle li feta lekhetlo la pele, ha ho se motho ea bulang kopo e eketsehileng ea ho hula ha tse mashome a mabeli li ntse li sebetsoa.

Ak'u inahanele u le moqapi ea hlokang ho ba oa pele oa ho tobetsa konopo ea "kopanya", hobane haeba moahelani a etsa sena, joale o tla tlameha ho ema ho fihlela lihahi tsohle li feta hape ... Che, seo se ke ke sa sebetsa. , e tla liehisa tsoelopele ka botebo.

Mokhoa oa bobeli o ka khonehang: bokella likopo tsa ho hula ka mor'a tlhahlobo ea khoutu. Ke hore, o bula kopo ea ho hula, bokella palo e hlokahalang ea tumello ho basebetsi-'moho, lokisa se hlokahalang, ebe o qala ho haha. Haeba li atlehile, kopo ea ho hula e kopanngoa ho nts'etsopele. Tabeng ena, ha ho na li-restarts tse eketsehileng, empa maikutlo a fokotseha haholo. Joaloka moqapi, ha ke bula kopo ea ho hula, hang-hang ke batla ho bona hore na e tla sebetsa. Ka mohlala, haeba tlhahlobo e hlōleha, u lokela ho e lokisa kapele. Tabeng ea mohaho o liehang, maikutlo a fokotseha, ka hona tsoelo-pele eohle. Sena le rona se ne se sa re tšoanele.

Ka lebaka leo, ho ile ha sala feela khetho ea boraro - baesekele. Khoutu eohle ea rona, mehloli eohle ea rona e bolokiloe sebakeng sa polokelo ho seva sa Bitbucket. Ka hona, re ile ra tlameha ho theha plugin ea Bitbucket.

Evolution ea CI sehlopheng sa nts'etsopele ea mehala

Plugin ena e feta mokhoa oa ho kopanya kopo ea ho hula. Tšimoloho ke e tloaelehileng: PR ea bula, likopano tsohle lia qalisoa, tlhahlobo ea khoutu e phethoa. Empa ka mor'a hore tlhahlobo ea khoutu e phethoe 'me moqapi a nke qeto ea ho tobetsa "kopanya", plugin e hlahloba hore na li-check li ile tsa tsamaisoa joang. Haeba nts'etsopele e ntlafalitsoe kamora ho aha, plugin e ke ke ea lumella kopo e joalo ea ho kopa ho kopanngoa lekaleng le leholo. E tla qala feela meaho ea ntlafatso ea morao-rao.

Evolution ea CI sehlopheng sa nts'etsopele ea mehala

Mohlala oa rona ka liphetoho tse hanyetsanang, meaho e joalo e tla hloleha ka lebaka la phoso ea ho bokella. Ka hona, moqapi oa karolo ea B o tla tlameha ho lokisa khoutu, a qale licheke, ebe plugin e tla sebelisa kopo ea ho hula ka bo eona.

Pele re kenya ts'ebetsong plugin ena, re ile ra etsa tlhahlobo ea tlhahlobo ea 2,7 ka kopo e ngoe le e ngoe ea ho hula. Ka plugin ho bile le lisebelisoa tse 3,6. Sena se ne se re tšoanela.

Ke habohlokoa ho hlokomela hore plugin ena e na le bothata: e tsosolosa mohaho hang feela. Ke hore, ho ntse ho e-na le fensetere e nyenyane eo liphetoho tse hanyetsanang li ka kenang ho tsona. Empa monyetla oa sena o tlase, mme re entse khoebo ena pakeng tsa palo ea ho qala le monyetla oa ho hloleha. Ka lilemo tse peli e ile ea thunya hang feela, kahoo mohlomong e ne e se lefeela.

Ho re nkile libeke tse peli ho ngola mofuta oa pele oa plugin ea Bitbucket.

Licheke tse ncha

Ho sa le joalo, sehlopha sa rona se ile sa tsoela pele ho hola. Licheke tse ncha li kentsoe.

Re ile ra nahana: ke hobane'ng ha re etsa liphoso haeba li ka thibeloa? Ke kahoo ba ileng ba kenya tshebetsong static code analysis. Re qalile ka lint, e kenyellelitsoeng ho Android SDK. Empa ka nako eo o ne a sa tsebe ho sebetsa le khoutu ea Kotlin ho hang, 'me re ne re se re ntse re e-na le 75% ea kopo e ngotsoeng Kotlin. Ka hona, tse hahiloeng ka hare li ile tsa eketsoa ho lint Android Studio e hlahloba.

Ho etsa sena, re ile ra tlameha ho etsa lintho tse ngata tse sothehileng: nka Studio ea Android, e e kenye ka har'a Docker 'me u e tsamaise ho CI ka mochine oa sebele, e le hore e nahane hore e sebetsa ka laptop ea sebele. Empa e ile ea sebetsa.

Hape ke nakong ena moo re ileng ra qala ho ngola haholo liteko tsa lisebelisoa le ho kenngwa tshebetsong tlhahlobo ea skrini. Mona ke ha skrini sa litšupiso se hlahisoa bakeng sa pono e nyane e arohaneng, 'me tlhahlobo e kenyelletsa ho nka skrini ho tsoa ponong le ho e bapisa le pixel e tloaelehileng ka kotloloho ka pixel. Haeba ho na le ho se lumellane, ho bolela hore moralo o fosahetse kae-kae kapa ho na le ho hong ho phoso ka litaele.

Empa liteko tsa lisebelisoa le liteko tsa skrini li hloka ho etsoa ka lisebelisoa: ho li-emulators kapa lisebelisoa tsa 'nete. Ha ho nahanoa hore ho na le liteko tse ngata 'me li tsamaisoa khafetsa, ho hlokahala polasi eohle. Ho qala polasi ea hau ho hloka mosebetsi o boima haholo, kahoo re fumane khetho e seng e entsoe - Firebase Test Lab.

Firebase Test Lab

E khethiloe hobane Firebase ke sehlahisoa sa Google, ho bolelang hore e lokela ho tšepahala 'me ho se bonolo hore e ka shoa. Litheko lia utloahala: $ 5 ka hora ea ts'ebetso ea sesebelisoa sa 'nete, 1 $ ka hora ea ts'ebetso ea emulator.

Ho nkile libeke tse ka bang tharo ho kenya tšebetsong Firebase Test Lab ho CI ea rona.

Empa sehlopha se ile sa tsoela pele ho hola, mme Firebase, ka bomalimabe, ea qala ho re nyahamisa. Ka nako eo, o ne a se na SLA. Ka linako tse ling Firebase e ne e etsa hore re eme ho fihlela palo e hlokahalang ea lisebelisoa e se e lokolohile bakeng sa liteko, 'me ha ea ka ea qala ho li etsa hang-hang, kamoo re neng re batla kateng. Ho ema moleng ho nkile halofo ea hora, e leng nako e telele haholo. Liteko tsa lisebelisoa li ile tsa etsoa ho PR e 'ngoe le e 'ngoe, ho lieha ho ile ha fokotsa tsoelo-pele, 'me chelete ea khoeli le khoeli e tla le chelete e pota-potileng. Ka kakaretso, ho ile ha etsoa qeto ea ho tlohela Firebase le ho sebetsa ka tlung, kaha sehlopha se ne se hōlile ka ho lekaneng.

Docker + Python + bash

Re nkile Docker, re kentse li-emulators ho eona, ra ngola lenaneo le bonolo ho Python, leo ka nako e nepahetseng le qalang palo e hlokahalang ea li-emulators ka mofuta o nepahetseng ebe oa li emisa ha ho hlokahala. 'Me, ehlile, lingoloa tse' maloa tsa bash - re ka be re le kae ntle le tsona?

Ho nkile libeke tse hlano ho theha tikoloho ea rona ea liteko.

Ka lebaka leo, bakeng sa kopo e 'ngoe le e' ngoe ea ho hula ho ne ho e-na le lenane le pharaletseng la ho thibela ho kopanya la licheke:

  • Kopano ea ARK;
  • Liteko tsa junit;
  • Lint;
  • licheke tsa Android Studio;
  • Liteko tsa lisebelisoa;
  • Liteko tsa skrini.

Sena se ile sa thibela ho senyeha ho ka bang teng. Ka botekgeniki ntho e 'ngoe le e' ngoe e ile ea sebetsa, empa bahlahisi ba ile ba tletleba ka hore ho emela liphetho ho ne ho le telele haholo.

Nako e telele hakae? Re kentse data ho tsoa ho Bitbucket le TeamCity ho sistimi ea tlhahlobo mme ra hlokomela seo karolelano ea nako ea ho leta 45 metsotso. Ke hore, moqapi, ha a bula kopo ea ho hula, o emela metsotso e 45 ka karolelano bakeng sa liphetho tsa mohaho. Ka maikutlo a ka, sena se ngata, 'me u ke ke ua sebetsa joalo.

Ha e le hantle, re ile ra etsa qeto ea ho potlakisa mehaho eohle ea rona.

A re phakiseng

Ho bona hore lihaho hangata li ema moleng, ntho ea pele eo re e etsang ke reka lisebelisoa tse ling tse ngata - tsoelo-pele e pharaletseng ke eona e bonolo ka ho fetisisa. Mehaho e ile ea emisa ho koloka, empa nako ea ho leta e fokotsehile hanyane, hobane licheke tse ling li nkile nako e telele haholo.

Ho tlosa licheke tse nkang nako e telele haholo

Kopano ea rona e Tsoelang Pele e ka tšoara mefuta ena ea liphoso le mathata.

  • Ha ke ea. CI e ka tšoara phoso ea ho bokella ha ntho e sa haheng ka lebaka la liphetoho tse hanyetsanang. Joalokaha ke se ke boletse, ha ho motho ea ka bokellang letho, nts'etsopele ea emisa, 'me bohle ba tšoha.
  • Phoso boitšoarong. Mohlala, ha sesebelisoa se hahiloe, empa sea senyeha ha o tobetsa konopo, kapa konopo ha e tobetsoe ho hang. Sena se mpe hobane bothata bo joalo bo ka fihla ho mosebelisi.
  • Bug in the layout. Mohlala, konopo ea tobetsoa, ​​empa e tsamaisitse lipikselse tse 10 ka letsohong le letšehali.
  • Keketseho ea likoloto tsa tekheniki.

Ka mor'a ho sheba lethathamo lena, re ile ra hlokomela hore lintlha tse peli tsa pele feela ke tsa bohlokoa. Re batla ho tšoara mathata a joalo pele. Litšitšili tse ka har'a moralo li fumanoa sethaleng sa tlhahlobo ea moralo 'me li ka lokisoa habonolo ka nako eo. Ho sebetsana le sekoloto sa tekheniki ho hloka ts'ebetso e fapaneng le moralo, kahoo re ile ra etsa qeto ea ho se e leke ka kopo ea ho hula.

Ho ipapisitsoe le sehlopha sena, re sisinya lethathamo lohle la licheke. Ho tšela Lint mme ya chechisa ho thakgolwa ha yona ka bosiu bo le bong: hore feela e tle e hlahise tlaleho ya hore na ho bile le mathata a makae morerong ona. Re ile ra lumellana ho sebetsa ka thoko le sekoloto sa tekheniki, le Licheke tsa Android Studio li lahliloe ka botlalo. Studio ea Android e Docker bakeng sa ho etsa tlhahlobo e utloahala e khahla, empa e baka mathata a mangata tšehetsong. Nchafatso efe kapa efe ea liphetolelo tsa Android Studio e bolela ho loana le likokoana-hloko tse sa utloisiseheng. Ho ne ho boetse ho le thata ho tšehetsa liteko tsa skrini, hobane laebrari e ne e sa tsitsa haholo mme ho ne ho e-na le maikutlo a fosahetseng. Liteko tsa skrini li tlositsoe lethathamong la tlhahlobo.

Ka lebaka leo, re ile ra sala le:

  • Kopano ea ARK;
  • Liteko tsa junit;
  • Liteko tsa lisebelisoa.

Cache e hole ea Gradle

Ntle le licheke tse boima, tsohle li ile tsa ntlafala. Empa phetheho ha e na moeli!

Kopo ea rona e ne e se e arotsoe ka li-module tse ka bang 150 tsa gradle. Cache e hole ea Gradle hangata e sebetsa hantle ntlheng ena, kahoo re nkile qeto ea ho e leka.

Gradle remote cache ke ts'ebeletso e ka bolokang li-artifacts bakeng sa mesebetsi ea motho ka mong ho li-module tsa motho ka mong. Gradle, sebakeng sa ho bokella khoutu, e sebelisa HTTP ho kokota ka cache e hole le ho botsa hore na ho na le motho ea seng a entse mosebetsi ona. Haeba ho joalo, e khoasolla sephetho feela.

Ho tsamaisa cache e hole ea Gradle ho bonolo hobane Gradle e fana ka setšoantšo sa Docker. Re ile ra khona ho etsa sena ka lihora tse tharo.

Seo u neng u tlameha ho se etsa feela ke ho qala Docker le ho ngola mola o le mong morerong. Empa leha e ka qalisoa kapele, ho tla nka nako e ngata hore ntho e 'ngoe le e' ngoe e sebetse hantle.

Ka tlase ke kerafo e siiloeng ke cache.

Evolution ea CI sehlopheng sa nts'etsopele ea mehala

Qalong haholo, peresente ea liphoso tsa cache e ne e ka ba 65. Ka mor'a libeke tse tharo, re khonne ho eketsa boleng bona ho 20%. Ho ile ha fumaneha hore mesebetsi eo sesebelisoa sa Android e e bokellang e na le litšepeho tse makatsang tsa phetoho, ka lebaka leo Gradle a ileng a hloloheloa cache.

Ka ho hokahanya cache, re ile ra potlakisa mohaho haholo. Empa ntle le kopano, ho boetse ho na le liteko tsa lisebelisoa, 'me li nka nako e telele. Mohlomong ha se liteko tsohle tse lokelang ho etsoa bakeng sa kopo e 'ngoe le e 'ngoe ea ho hula. Ho fumana, re sebelisa tlhahlobo ea phello.

Tlhahlobo ea tšusumetso

Ka kopo ea ho hula, re bokella git diff mme re fumana li-module tsa Gradle tse fetotsoeng.

Evolution ea CI sehlopheng sa nts'etsopele ea mehala

Hoa utloahala ho etsa liteko tsa lisebelisoa tse hlahlobang li-module tse fetotsoeng le li-module tsohle tse itšetlehileng ka tsona. Ha ho na lebaka la ho etsa liteko bakeng sa li-module tsa boahelani: khoutu ea moo ha e so fetohe 'me ha ho letho le ka senyang.

Liteko tsa lisebelisoa ha li bonolo hakaalo, hobane li tlameha ho behoa mojulung oa boemo bo holimo ba Kopo. Re sebelisitse heuristics ka tlhahlobo ea bytecode ho utloisisa hore na tlhahlobo ka 'ngoe ke ea mojule ofe.

Ho ntlafatsa ts'ebetso ea liteko tsa lisebelisoa e le hore li hlahlobe li-module tse amehang ho nkile libeke tse ka bang robeli.

Mehato ea ho potlakisa tlhahlobo e sebelitse ka katleho. Ho tloha metsotso e 45 re ile ra nyolohela ho hoo e ka bang 15. Ho se ho tloaelehile ho emela kotara ea hora bakeng sa ho haha.

Empa joale bahlahisi ba se ba qalile ho tletleba ka hore ha ba utloisise hore na ke meaho efe e ntseng e thakholoa, moo ho ka bonoang log, hore na ke hobane'ng ha mohaho o le khubelu, ke tlhahlobo efe e hlōlehileng, joalo-joalo.

Evolution ea CI sehlopheng sa nts'etsopele ea mehala

Mathata a maikutlo a fokotsa tsoelo-pele, kahoo re lekile ho fana ka lintlha tse hlakileng le tse qaqileng ka PR ka 'ngoe le ho haha ​​​​ka moo re ka khonang. Re qalile ka litlhaloso ho Bitbucket ho PR, e bontšang hore na ke mohaho ofe o hlōlehileng le hore na ke hobane'ng, 'me re ngotse melaetsa e lebisitsoeng ho Slack. Qetellong, re thehile dashboard ea PR bakeng sa leqephe le nang le lethathamo la lihahi tsohle tse ntseng li sebetsa le boemo ba tsona: tse kolokileng, tse mathang, tse oeleng kapa tse phethiloeng. U ka tobetsa ho haha ​​'me u fihle ho eona log.

Evolution ea CI sehlopheng sa nts'etsopele ea mehala

Ho ile ha sebelisoa libeke tse tšeletseng ho fana ka maikutlo a qaqileng.

Merero

A re feteleng pele historing ea morao tjena. Kamora ho rarolla bothata ba maikutlo, re fihletse boemo bo bocha - re nkile qeto ea ho ikahela polasi ea rona ea emulator. Ha ho na le liteko tse ngata le li-emulators, ho thata ho li laola. Ka lebaka leo, li-emulators tsa rona kaofela li ile tsa fallela sehlopheng sa k8s se nang le taolo e bonolo ea lisebelisoa.

Ho phaella moo, ho na le merero e meng.

  • Khutlisetsa Lint (le tlhahlobo e 'ngoe e tsitsitseng). Re se re ntse re sebetsa ntlheng ena.
  • Matha tsohle ho PR blocker liteko tsa ho qetela liphetolelong tsohle tsa SDK.

Kahoo, re hlokometse histori ea tsoelo-pele ea Continuous Integration ho Avito. Hona joale ke batla ho fana ka keletso ho latela pono e nang le phihlelo.

Litlhahiso

Haeba nka fana ka keletso e le 'ngoe feela e ka ba sena:

Ka kopo ela hloko mangolo a likhetla!

Bash ke sesebelisoa se tenyetsehang haholo ebile se matla, se bonolo ebile se potlakile ho ngola mangolo. Empa u ka oela lerabeng le eona, 'me, ka bomalimabe, re ile ra oela ho eona.

Tsohle li qalile ka lingoloa tse bonolo tse neng li sebetsa mochining oa rona oa kaho:

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

Empa, joalo ka ha u tseba, ntho e 'ngoe le e' ngoe e ea hola 'me e ba thata le ho feta ha nako e ntse e feta - ha re tsamaiseng sengoloa se le seng ho tloha ho se seng, ha re feteleng liparamente tse ling moo - qetellong re ile ra tlameha ho ngola tšebetso e bontšang hore na re boemong bofe ba sehlaha sa bash hona joale. ho kenya mantsoe a qotsitsoeng a hlokahalang, ho qala tsohle.

Evolution ea CI sehlopheng sa nts'etsopele ea mehala

U ka inahanela litšenyehelo tsa mosebetsi bakeng sa nts'etsopele ea mangolo a joalo. Ke u eletsa hore u se ke ua oela lerabeng lena.

Ke eng e ka nkeloang sebaka?

  • Puo efe kapa efe ea ho ngola. Ngolla ho Python kapa Kotlin Script e bonolo haholo hobane ke lenaneo, eseng mangolo.
  • Kapa hlalosa lintlha tsohle tsa moaho ka foromo Mesebetsi e tloaelehileng ea butle-butle bakeng sa morero oa hau.

Re nkile qeto ea ho khetha khetho ea bobeli, 'me joale re hlakola mangolo ohle a bash mme re ngola mesebetsi e mengata e tloaelehileng ea gradle.

Keletso #2: Boloka lisebelisoa ka khoutu.

Ho bonolo ha maemo a Tsoelang Pele a Kopanyo e sa bolokoe ka har'a sebopeho sa UI sa Jenkins kapa TeamCity, joalo-joalo, empa e le ka mokhoa oa lifaele tsa mongolo ka kotloloho sebakeng sa polokelo ea projeke. Sena se fana ka phetolelo. Ho ke ke ha ba thata ho khutlisa kapa ho aha khoutu lekaleng le leng.

Mengolo e ka bolokoa morerong. Ho etsa eng ka tikoloho?

Keletso #3: Docker e ka thusa ka tikoloho.

Ka sebele e tla thusa baetsi ba Android; iOS ha e na eona, ka bomalimabe.

Ona ke mohlala oa faele e bonolo ea docker e nang le jdk le 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

Ha u se u ngotse faele ena ea Docker (ke tla u bolella lekunutu, ha ua tlameha ho e ngola, empa feela u e hule e se e entsoe ho tloha GitHub) 'me u bokelle setšoantšo, u fumana mochine o sebetsang oo u ka ahang kopo ho oona. le ho tsamaisa liteko tsa Junit.

Mabaka a mabeli a ka sehloohong a etsang hore sena se be se utloahalang ke scalability le pheta-pheta. U sebelisa docker, o ka phahamisa kapele li-agent tse XNUMX tse tla ba le tikoloho e ts'oanang hantle le ea pele. Sena se etsa hore bophelo ba baenjiniere ba CI bo be bonolo haholo. Ho bonolo haholo ho sutumelletsa android-sdk ho ​​docker, empa ka li-emulators ho thata haholoanyane: o tla tlameha ho sebetsa ka thata haholoanyane (kapa khoasolla e felileng ho tsoa ho GitHub hape).

Keletso ea 4: u se ke ua lebala hore tlhahlobo ha e etsoe molemong oa tlhahlobo, empa e etselitsoe batho.

Ka potlako le, ho bohlokoa ka ho fetisisa, maikutlo a hlakileng ke a bohlokoa haholo ho bahlahisi: ke eng e robehileng, ke tlhahlobo efe e hlōlehileng, nka bona mohaho oa mohaho hokae.

Keletso #5: E-ba le pragmatic ha u nts'etsapele Kopano e Tsoelang Pele.

Utloisisa ka ho hlaka hore na u batla ho thibela liphoso tsa mofuta ofe, hore na u ikemiselitse ho sebelisa lisebelisoa tse kae, nako le nako ea komporo. Licheke tse nkang nako e telele haholo, mohlala, li ka chechisoa ka bosiu bo le bong. 'Me ba sa tšoase liphoso tsa bohlokoa haholo ba lokela ho tloheloa ka ho feletseng.

Keletso #6: Sebelisa lisebelisoa tse seng li entsoe.

Hona joale ho na le lik'hamphani tse ngata tse fanang ka cloud CI.

Evolution ea CI sehlopheng sa nts'etsopele ea mehala

Ena ke tharollo e ntle bakeng sa lihlopha tse nyane. Ha ho hlokahale hore u tšehetse letho, lefa chelete e nyane feela, etsa kopo ea hau mme u etse liteko tsa lisebelisoa.

Keletso #7: Sehlopheng se seholo, litharollo tsa ka tlung li na le chelete e ngata.

Empa kapele kapa hamorao, ha sehlopha se ntse se hola, litharollo tsa ka tlung li tla ba le chelete e ngata. Ho na le bothata bo le bong ka liqeto tsena. Ho na le molao oa ho fokotsa phaello ea moruo: morerong ofe kapa ofe, ntlafatso e 'ngoe le e' ngoe e latelang e thata le ho feta mme e hloka matsete a mangata.

Economics e hlalosa bophelo bohle ba rona, ho kenyelletsa le Continuous Integration. Ke thehile kemiso ea litšenyehelo tsa basebetsi bakeng sa mohato ka mong oa nts'etsopele ea Kopano ea rona e Tsoelang Pele.

Evolution ea CI sehlopheng sa nts'etsopele ea mehala

Ho hlakile hore ntlafatso leha e le efe e ntse e e-ba thata le ho feta. Ha u sheba graph ena, u ka utloisisa hore Tšebelisano e Tsoelang Pele e hloka ho ntlafatsoa ho latela kholo ea sehlopha sa sehlopha. Bakeng sa sehlopha sa batho ba babeli, ho qeta matsatsi a 50 ho nts'etsapele polasi ea ka hare ea emulator ke mohopolo o bobebe. Empa ka nako e ts'oanang, bakeng sa sehlopha se seholo, ho se etse Continuous Integration ho hang hape ke khopolo e mpe, hobane mathata a ho kopanya, ho lokisa puisano, joalo-joalo. ho tla nka nako le ho feta.

Re ile ra qala ka khopolo ea hore automation ea hlokahala hobane batho ba theko e boima, ba etsa liphoso ebile ba botsoa. Empa batho ba boetse ba iketsetsa. Ka hona, mathata ohle a tšoanang a sebetsa ho automation.

  • Automation e theko e boima. Hopola kemiso ea mosebetsi.
  • Ha ho tluoa tabeng ea ho iketsetsa, batho ba etsa liphoso.
  • Ka linako tse ling ho botsoa haholo ho iketsetsa, hobane ntho e 'ngoe le e' ngoe e sebetsa ka tsela eo. Ke hobane'ng ha u ntlafatsa ntho leha e le efe e 'ngoe, ke hobane'ng ha Kopano e Tsoelang Pele ee?

Empa ke na le lipalo-palo: liphoso li tšoaroa ka 20% ea likopano. 'Me sena ha se hobane baetsi ba rona ba ngola khoutu hampe. Sena ke hobane bahlahisi ba na le ts'epo ea hore haeba ba etsa phoso e itseng, e ke ke ea qetella e le teng, e tla tšoaroa ke licheke tse ikemetseng. Ka hona, bahlahisi ba ka qeta nako e ngata ba ngola khoutu le lintho tse khahlisang, ho fapana le ho matha le ho leka ntho e itseng sebakeng sa heno.

Itloaetse ho Tsoela Pele ho Kopanya. Empa ka teka-tekano.

Ka tsela, Nikolai Nesterov ha a fane ka litlaleho tse ntle feela, empa hape ke setho sa komiti ea lenaneo LisebelisoaConf le ho thusa ba bang ho u lokisetsa lipuo tse nang le moelelo. Botlalo le molemo oa lenaneo le latelang la kopano li ka hlahlojoa ka lihlooho ho kemiso. Mme bakeng sa lintlha, tloho Infospace ka la 22-23 Mmesa.

Source: www.habr.com

Eketsa ka tlhaloso