Evolution nke CI n'ime otu mmepe mkpanaka

Taa, a na-emepụta ọtụtụ ngwaahịa ngwanrọ na otu. Enwere ike igosipụta ọnọdụ maka mmepe otu na-aga nke ọma n'ụdị eserese dị mfe.

Evolution nke CI n'ime otu mmepe mkpanaka

Ozugbo i dechara koodu gị, ikwesiri ijide n'aka na ya:

  1. Mmekọrịta.
  2. Ọ naghị agbaji ihe ọ bụla, gụnyere koodu ndị ọrụ ibe gị dere.

Ọ bụrụ na ọnọdụ abụọ ahụ zutere, mgbe ahụ ị nọ n'ụzọ nke ịga nke ọma. Iji lelee ọnọdụ ndị a n'ụzọ dị mfe ma ghara ịpụ n'okporo ụzọ bara uru, anyị bịara na Njikọ Na-aga n'ihu.

CI bụ usoro ọrụ ebe ị na-etinye koodu gị n'ime koodu ngwaahịa n'ozuzu oge ọ bụla o kwere mee. Na ọ bụghị naanị na ị na-ejikọta ọnụ, ma na-achọpụtakwa mgbe niile na ihe niile na-arụ ọrụ. Ebe ọ bụ na ịchọrọ ịlele ọtụtụ na mgbe mgbe, ọ bara uru iche echiche maka akpaaka. Ị nwere ike iji aka gị lelee ihe niile, mana i kwesịghị, ma nke a bụ ihe kpatara ya.

  • Ezigbo ndị mmadụ. Otu awa ọrụ nke onye mmemme ọ bụla dị oke ọnụ karịa otu awa ọrụ nke ihe nkesa ọ bụla.
  • Ndị mmadụ na-emehie ihe. Ya mere, ọnọdụ nwere ike ibilite mgbe emere ule n'alaka na-ezighi ezi ma ọ bụ chịkọtara ihe na-ezighi ezi maka ndị nyocha.
  • Ndị mmadụ dị umengwụ. Site n'oge ruo n'oge, m mechaa otu ọrụ, echiche na-ebilite: “Gịnị ka a ga-enyocha? Edere m ahịrị abụọ - ihe niile na-arụ ọrụ! Echere m na ụfọdụ n'ime unu na-enwekwa echiche dị otú ahụ mgbe ụfọdụ. Ma ị kwesịrị ị na-elele mgbe niile.

Otu esi arụ ọrụ na-aga n'ihu na-emejuputa ma mepụta na Avito mobile development team, otú ha si na 0 ruo 450 na-ewu kwa ụbọchị, na ndị na-ewu ígwè ọrụ na-agbakọta awa 200 kwa ụbọchị, ka Nikolai Nesterov (na-ekwu)nnesterov) bụ onye so na mgbanwe mgbanwe mgbanwe niile nke ngwa gam akporo CI/CD.

Akụkọ ahụ dabere na ihe atụ nke iwu gam akporo, mana ọtụtụ n'ime ụzọ a dịkwa na iOS kwa.


N'otu oge, otu onye na-arụ ọrụ na otu Avito Android. Site na nkọwa, ọ chọghị ihe ọ bụla site na Njikọ Na-aga n'ihu: ọ dịghị onye ọ bụla iji jikọta ya.

Ma ngwa ahụ toro, ọtụtụ ọrụ ọhụrụ pụtara, na otu ahụ toro ya. N'oge ụfọdụ, ọ bụ oge iji guzobe usoro ntinye koodu n'ụzọ nkịtị. Ekpebiri iji Git flow.

Evolution nke CI n'ime otu mmepe mkpanaka

Echiche nke Git eruba bụ nke a maara nke ọma: ọrụ nwere otu alaka mmepe na-emekarị, na maka njirimara ọhụrụ ọ bụla, ndị mmepe na-egbutu alaka dị iche iche, tinye aka na ya, na-agbanye, na mgbe ha chọrọ ijikọ koodu ha n'ime alaka mmepe, mepee sere arịrịọ. Iji kesaa ihe ọmụma na kwurịta ụzọ, anyị webatara nyochaa koodu, ya bụ, ndị ọrụ ibe ga-enyocha ma kwado koodu nke onye ọ bụla.

Nyochaa

Iji anya gị hụ koodu dị mma, mana ezughị oke. Ya mere, a na-ewebata nlele akpaaka.

  • Nke mbụ, anyị na-elele Mgbakọ ARK.
  • A otutu Nnwale Junit.
  • Anyị na-eche mkpuchi koodu, ebe ọ bụ na anyị na-agba ọsọ ule.

Iji ghọta ka esi agba ọsọ ego ndị a, ka anyị lelee usoro mmepe na Avito.

Enwere ike gosipụta ya na schematically dị ka nke a:

  • Onye nrụpụta na-ede koodu na laptọọpụ ya. Ị nwere ike ịme nlele ntinye aka ebe a - ma ọ bụ jiri nko aka, ma ọ bụ na-agba ọsọ nlele n'azụ.
  • Mgbe onye nrụpụta chụpụrụ koodu ahụ, ọ na-emepe arịrịọ ịdọrọ. Ka koodu ya wee tinye ya na ngalaba mmepe, ọ dị mkpa ịgafe nyocha koodu ma nakọta ọnụ ọgụgụ nkwenye achọrọ. Ị nwere ike ime ka nlele ma wuo ebe a: ruo mgbe arụrụ ụlọ niile ga-aga nke ọma, enweghị ike ijikọ arịrịọ ndọta.
  • Mgbe ejikọtara arịrịọ ịdọrọ ma tinye koodu ahụ na mmepe, ị nwere ike ịhọrọ oge dị mma: dịka ọmụmaatụ, n'abalị, mgbe ihe nkesa niile nwere onwe ha, ma na-agba ọsọ dị ka ego ole masịrị gị.

Ọ dịghị onye nwere mmasị n'ịgba nyocha na laptọọpụ ha. Mgbe onye nrụpụta rụchara atụmatụ, ọ chọrọ ịkwanye ya ngwa ngwa wee mepee arịrịọ ndọpụta. Ọ bụrụ na n'oge a, ụfọdụ nyocha ogologo oge na-amalite, nke a abụghị nanị na ọ dịghị mma, kamakwa ọ na-ebelata mmepe: mgbe laptọọpụ na-enyocha ihe, ọ gaghị ekwe omume ịrụ ọrụ na ya.

Anyị nwere mmasị na ịgba ọsọ n'abalị, n'ihi na e nwere ọtụtụ oge na sava, ị nwere ike na-agagharị. Mana, ọ dị nwute, mgbe koodu njirimara batara, onye nrụpụta nwere obere mkpali iji dozie njehie ndị CI chọtara. Ana m ejide onwe m oge ụfọdụ na-eche mgbe m lere anya na njehie niile a na-ahụ na akụkọ ụtụtụ na m ga-edozi ha otu ụbọchị ka e mesịrị, n'ihi na ugbu a enwere ọrụ ọhụrụ dị mma na Jira nke m chọrọ ịmalite ime.

Ọ bụrụ na ndenye ego na-egbochi arịrịọ ịdọrọ, mgbe ahụ enwere mkpali zuru oke, n'ihi na ruo mgbe ihe ndị ahụ na-ewu na-acha akwụkwọ ndụ akwụkwọ ndụ, koodu ahụ agaghị abanye n'ime ya, nke pụtara na ọrụ ahụ agaghị agwụ agwụ.

N'ihi ya, anyị na-ahọrọ usoro ndị a: anyị na-agba ọsọ kachasị nke ndenye ego n'abalị, ma malite ihe kachasị njọ na ha na, nke kachasị mkpa, ndị kachasị ngwa ngwa na arịrịọ ịdọrọ. Mana anyị anaghị akwụsị ebe ahụ-n'otu aka ahụ, anyị na-ebuli ọsọ nke nlele anya iji bufee ha site na ọnọdụ abalị iji dọpụta ndenye ego.

N'oge ahụ, arụchara ụlọ anyị niile ngwa ngwa, yabụ na anyị gụnyere naanị ihe nrụpụta ARK, ule Junit na mgbako mkpuchi koodu dị ka ihe mgbochi maka ịrịọ arịrịọ. Anyị gbanye ya, chee echiche banyere ya, ma gbahapụ mkpuchi koodu n'ihi na anyị chere na anyị achọghị ya.

O were anyị ụbọchị abụọ iji guzobe CI bụ isi (nke a ga - eme atụmatụ oge dị nso, achọrọ maka ọnụ ọgụgụ).

Mgbe nke ahụ gasịrị, anyị malitere ichekwu echiche - ànyị na-enyocha ya nke ọma? Anyị na-agba ọsọ na-ewuli elu na ịrịọ arịrịọ nke ọma?

Anyị malitere iwu ụlọ na njedebe ikpeazụ nke alaka ụlọ ọrụ nke e si meghere arịrịọ ịdọrọ. Mana ule nke nkwa a nwere ike igosi na koodu onye nrụpụta dere na-arụ ọrụ. Ma ha egosighị na o mebighị ihe ọ bụla. N'ezie, ịkwesịrị ịlele ọnọdụ nke alaka ụlọ ọrụ na-emepe emepe mgbe ejikọtara njirimara n'ime ya.

Evolution nke CI n'ime otu mmepe mkpanaka

Iji mee nke a, anyị dere edemede bash dị mfe premerge.sh:

#!/usr/bin/env bash

set -e

git fetch origin develop

git merge origin/develop

N'ebe a, a na-eweghachite mgbanwe niile kachasị ọhụrụ site na mmepe wee jikọta na ngalaba dị ugbu a. Anyị gbakwunyere premerge.sh script dị ka nzọụkwụ mbụ na ihe niile na-ewuli wee malite ịlele kpọmkwem ihe anyị chọrọ, ya bụ. mwekota.

O were ụbọchị atọ iji dozie nsogbu ahụ, chọta ngwọta, wee dee edemede a.

Ngwa ahụ mepụtara, ọtụtụ ọrụ pụtara, otu ahụ tolitere, na premerge.sh mgbe ụfọdụ malitere imebi anyị. Mmepe nwere mgbanwe ndị na-emegiderịta onwe ha mebiri ụlọ ahụ.

Ọmụmaatụ ka nke a si eme:

Evolution nke CI n'ime otu mmepe mkpanaka

Ndị mmepe abụọ n'otu oge na-amalite ịrụ ọrụ na atụmatụ A na B. Onye nrụpụta njirimara A na-achọpụta ihe ejighi ya n'ọrụ a. answer() na, dị ka ezigbo nwa nwoke scout, na-ewepụ ya. N'otu oge ahụ, onye nrụpụta njirimara B na-agbakwụnye oku ọhụrụ na ọrụ a na alaka ya.

Ndị mmepe rụchaa ọrụ ha wee mepee arịrịọ ịdọrọ n'otu oge. A na-ewepụta ụlọ ahụ, premerge.sh na-enyocha arịrịọ abụọ ahụ gbasara steeti mmepe kachasị ọhụrụ - ndenye ego niile bụ akwụkwọ ndụ akwụkwọ ndụ. Mgbe nke ahụ gasịrị, a na-ejikọta arịrịọ nke atụmatụ A, a na-ejikọta arịrịọ nke atụmatụ B ... ọganihu! Zụlite nkwụsịtụ n'ihi na koodu mmepe nwere oku na-aga na ọrụ adịghị adị.

Evolution nke CI n'ime otu mmepe mkpanaka

Mgbe ọ na-agaghị ịzụlite, ọ bụ ọdachi obodo. Ndị otu niile enweghị ike ịnakọta ihe ọ bụla wee nyefee ya maka nnwale.

Ọ mere na m na-arụkarị ọrụ na akụrụngwa akụrụngwa: nyocha, netwọkụ, ọdụ data. Ya bụ, ọ bụ m dere ọrụ na klaasị ndị mmepe ndị ọzọ na-eji. N'ihi nke a, ahụrụ m onwe m n'ọnọdụ ndị yiri nke ahụ ọtụtụ mgbe. Edebere m foto a ruo nwa oge.

Evolution nke CI n'ime otu mmepe mkpanaka

Ebe ọ bụ na nke a adabaghị anyị, anyị malitere inyocha nhọrọ maka otu esi egbochi nke a.

Olee otú ghara imebi ịzụlite

Nhọrọ mbụ: wughachi arịrịọ ndọpụta niile mgbe ị na-emelite mmepe. Ọ bụrụ na, n'ihe atụ anyị, arịrịọ ịdọrọ na njirimara A bụ nke mbụ a ga-etinye na mmepe, a ga-ewughachi arịrịọ nke njirimara B, na, ya mere, nlele anya ga-ada n'ihi njehie nchịkọta.

Iji ghọta ogologo oge nke a ga-ewe, tụlee ihe atụ nwere PR abụọ. Anyị na-emepe PRs abụọ: abụọ na-ewuli elu, nlele abụọ na-agba ọsọ. Mgbe PR nke mbụ jikọtara ya na mmepe, nke abụọ kwesịrị ka e wughachi ya. Na mkpokọta, PRs abụọ chọrọ nlele nlele atọ: 2 + 1 = 3.

Na ụkpụrụ, ọ dị mma. Ma, anyị lere anya na ọnụ ọgụgụ, na-ahụkarị ọnọdụ na anyị otu bụ 10 oghe PRs, na mgbe ahụ, ọnụ ọgụgụ nke elele bụ nchikota nke ọganihu: 10 + 9 +... + 1 = 55. Ya bụ, ịnakwere 10. PRs, ịkwesịrị iwughachi ugboro 55. Na nke a bụ n'ọnọdụ dị mma, mgbe nlele niile na-agafe oge mbụ, mgbe ọ nweghị onye na-emepe arịrịọ ịdọrọ ọzọ mgbe a na-ahazi iri na abuo ndị a.

Were onwe gị dị ka onye mmepụta nke kwesịrị ịbụ onye mbụ na-pịa bọtịnụ "jikota", n'ihi na ọ bụrụ na onye agbata obi na-eme nke a, mgbe ahụ, ị ​​ga-echere ruo mgbe ihe niile na-ewu ụlọ ga-agafe ọzọ ... Mba, nke ahụ agaghị arụ ọrụ. , ọ ga-akwụsịlata mmepe nke ukwuu.

Ụzọ nke abụọ enwere ike: na-anakọta arịrịọ ịdọrọ mgbe nyocha koodu gasịrị. Ya bụ, imepe arịrịọ ịdọrọ, na-anakọta ọnụọgụ nkwado achọrọ n'aka ndị ọrụ ibe gị, dozie ihe achọrọ, wee malite ihe nrụpụta. Ọ bụrụ na ha na-aga nke ọma, a na-ejikọta arịrịọ ịdọrọ ka ọ bụrụ mmepe. N'okwu a, enweghị mmalite mmalite ọzọ, mana nzaghachi na-ebelata nke ukwuu. Dịka onye nrụpụta, mgbe m meghere arịrịọ ịdọrọ, achọrọ m ozugbo ịhụ ma ọ ga-arụ ọrụ. Dịka ọmụmaatụ, ọ bụrụ na ule daa, ịkwesịrị idozi ya ngwa ngwa. N'ihe banyere ụlọ na-egbu oge, nzaghachi na-ebelata, ya mere mmepe dum. Nke a ekwekwaghị anyị.

N'ihi ya, naanị nhọrọ nke atọ fọdụrụ - igwe kwụ otu ebe. A na-echekwa koodu anyị niile, isi mmalite anyị niile na ebe nchekwa na sava Bitbucket. N'ihi ya, anyị ga-emepụta ngwa mgbakwunye maka Bitbucket.

Evolution nke CI n'ime otu mmepe mkpanaka

Ngwa mgbakwunye a na-akagbu usoro ntinye arịrịọ. Mmalite bụ ọkọlọtọ: PR na-emepe, a na-ewepụta mgbakọ niile, nyochaa koodu agwụla. Mana ka emechara nyocha koodu ahụ ma onye nrụpụta kpebiri ịpị “jikota”, ihe mgbakwunye na-enyocha nke mebere steeti nyocha ndị ahụ. Ọ bụrụ na emelitere mmepe ka emechara, ngwa mgbakwunye agaghị ekwe ka ejikọta arịrịọ ndọta dị otú ahụ na ngalaba isi. Ọ ga-amalitegharị ihe nrụpụta nke mmepe ọhụrụ na-adịbeghị anya.

Evolution nke CI n'ime otu mmepe mkpanaka

N'ihe atụ anyị nwere mgbanwe ndị na-emegiderịta onwe ha, ụlọ ndị dị otú ahụ ga-ada n'ihi njehie nchịkọta. N'ihi ya, onye nrụpụta njirimara B ga-edozi koodu ahụ, malitegharịa ndenye ego, mgbe ahụ ngwa mgbakwunye ga-etinye arịrịọ ịdọrọ na-akpaghị aka.

Tupu imejuputa ngwa mgbakwunye a, anyị gbagoro nyocha nyocha 2,7 kwa arịrịọ ịdọrọ. Site na ngwa mgbakwunye enwere mmalite 3,6. Nke a dabara anyị.

Ọ dị mma ịmara na ngwa mgbakwunye a nwere ihe ndọghachi azụ: ọ na-amalitegharị ihe nrụpụta otu ugboro. Ya bụ, a ka nwere obere windo nke mgbanwe ndị na-emegiderịta onwe ha nwere ike isi malite. Ma o yikarịrị ka nke a dị ala, anyị mere ahia a n'etiti ọnụ ọgụgụ mmalite na ohere nke ọdịda. N'ime afọ abụọ ọ gbara naanị otu ugboro, yabụ na ọ bụghị n'efu.

O were anyị izu abụọ iji dee ụdị ngwa mgbakwunye Bitbucket mbụ.

Nyocha ọhụrụ

Ka ọ dị ugbu a, otu anyị gara n'ihu na-eto eto. Etinyekwala nlele ọhụrụ.

Anyị chere: gịnị kpatara imehie ma ọ bụrụ na enwere ike igbochi ha? Ya mere ha ji mejuputa ya nyocha koodu static. Anyị malitere na lint, nke gụnyere na Android SDK. Ma n'oge ahụ, ọ maghị otú e si arụ ọrụ na Kotlin code, na anyị enweelarị 75% nke ngwa e dere na Kotlin. Ya mere, a na-agbakwunye ndị e wuru na lint Android Studio na-enyocha.

Iji mee nke a, anyị ga-eme ọtụtụ ntụgharị: were gam akporo Studio, kpochie ya na Docker wee mee ya na CI na ihe nleba anya mebere, ka o wee chee na ọ na-agba na ezigbo laptọọpụ. Ma ọ rụrụ ọrụ.

Ọ bụkwa n'oge a ka anyị malitere ide ọtụtụ ihe ule ngwá ọrụ ma mejuputa ya nyocha nseta ihuenyo. Nke a bụ mgbe a na-ewepụta nseta ihuenyo ntụaka maka obere nlele dị iche, ule a gụnyere ịse nseta ihuenyo site na nlele wee jiri ya na ọkọlọtọ ozugbo pixel site na pikselụ. Ọ bụrụ na enwere nghọtahie, ọ pụtara na nhazi ahụ ezighi ezi ebe ma ọ bụ ihe na-ezighi ezi na ụdị.

Mana ọ dị mkpa ka a na-agba ule ngwa na nyocha nseta ihuenyo na ngwaọrụ: na emulators ma ọ bụ na ngwaọrụ n'ezie. N'iburu n'uche na enwere ọtụtụ ule na a na-agba ọsọ ugboro ugboro, a chọrọ ugbo dum. Ịmalite ugbo nke gị na-agbasi mbọ ike, yabụ anyị chọtara nhọrọ emebere - Firebase Test Lab.

ụlọ nyocha firebase

Ahọpụtara ya n'ihi na Firebase bụ ngwaahịa Google, nke pụtara na ọ kwesịrị ntụkwasị obi na o yighị ka ọ ga-anwụ. Ọnụ ego ndị ahụ bụ ihe ezi uche dị na ya: $ 5 kwa elekere ọrụ nke ezigbo ngwaọrụ, 1 $ kwa elekere nke ọrụ nke emulator.

Ọ were ihe dị ka izu atọ iji mejuputa Firebase Test Lab n'ime CI anyị.

Ma otu ahụ gara n'ihu na-eto eto, na Firebase, dị mwute ikwu, malitere ime ka anyị daa. N'oge ahụ, o nweghị SLA. Mgbe ụfọdụ Firebase na-eme ka anyị chere ruo mgbe ọnụọgụ ngwaọrụ achọrọ n'efu maka ule, ma ghara ịmalite ime ha ozugbo, dịka anyị chọrọ. Ichere n'ahịrị were ihe ruru ọkara elekere, nke bụ ogologo oge. A na-anwale ule ngwá ọrụ na PR ọ bụla, igbu oge na-ebelata mmepe ahụ n'ezie, mgbe ahụ, ụgwọ ọnwa na-abịa na nchikota gburugburu. N'ozuzu, e kpebiri ịhapụ Firebase ma rụọ ọrụ n'ime ụlọ, ebe ọ bụ na otu ahụ toro nke ọma.

Docker + Python + bash

Anyị were Docker, ndị emulator juru eju n'ime ya, dee mmemme dị mfe na Python, nke n'oge kwesịrị ekwesị na-ebulite ọnụ ọgụgụ ndị emulator chọrọ na ụdị achọrọ ma kwụsị ha mgbe ọ dị mkpa. Na, n'ezie, di na nwunye nke bash scripts - kedu ka anyị ga-anọ na-enweghị ha?

O were izu ise iji mepụta ebe ule nke anyị.

N'ihi ya, maka arịrịọ ọ bụla dọtara, e nwere nnukwu ndepụta nchichi nke ndenye ego:

  • Mgbakọ ARK;
  • Nnwale Junit;
  • lint;
  • Android Studio na-enyocha;
  • Nnwale ngwaọrụ;
  • Nnwale nseta ihuenyo.

Nke a gbochiri ọtụtụ ndakpọ olileanya. Teknụzụ ihe niile na-arụ ọrụ, mana ndị mmepe mere mkpesa na ichere nsonaazụ dị ogologo.

Ogologo oge ole ka ogologo? Anyị bulitere data sitere na Bitbucket na TeamCity n'ime usoro nyocha wee ghọta nke ahụ Nkezi oge echere 45 nkeji. Ya bụ, onye nrụpụta, mgbe ị na-emepe arịrịọ ịdọrọ, na-eche na nkezi nkeji 45 maka nsonaazụ nrụpụta. N'uche m, nke a dị ọtụtụ, ma ị nweghị ike ịrụ ọrụ dị otú ahụ.

N'ezie, anyị kpebiri ime ka ihe niile anyị na-ewu ngwa ngwa.

Ka anyị mee ngwa ngwa

Ịhụ na-ewuli elu na-eguzo na kwụ n'ahịrị, ihe mbụ anyị na-eme bụ zụtara ngwaike ọzọ - mmepe buru ibu bụ nke kachasị mfe. Ewu ụlọ kwụsịrị kwụ n'ahịrị, ma oge nchere belatara naanị ntakịrị, n'ihi na ụfọdụ ndenye ego n'onwe ha were ogologo oge.

Iwepu ndenye ego na-ewe ogologo oge

Mmekọrịta anyị na-aga n'ihu nwere ike ijide ụdị njehie na nsogbu ndị a.

  • Agaghị aga. CI nwere ike ijide njehie mkpokọta mgbe ihe na-ewulighị n'ihi mgbanwe ndị na-emegiderịta onwe ha. Dị ka m kwuru na mbụ, ọ dịghị onye nwere ike ịchịkọta ihe ọ bụla, mmepe na-akwụsị, onye ọ bụla na-amakwa jijiji.
  • Ahụhụ na omume. Dịka ọmụmaatụ, mgbe arụnyere ngwa ahụ, mana ọ na-akụda mgbe ịpịrị bọtịnụ, ma ọ bụ na ọ naghị emetụ bọtịnụ ahụ ma ọlị. Nke a dị njọ n'ihi na ahụhụ dị otú ahụ nwere ike iru onye ọrụ.
  • Ahụhụ na nhazi. Dịka ọmụmaatụ, a na-pịa bọtịnụ, mana ọ kwagara 10 pikselụ n'aka ekpe.
  • Mmụba na teknuzu ụgwọ.

Mgbe anyị lechara ndepụta a anya, anyị chọpụtara na ọ bụ naanị isi ihe abụọ mbụ dị oke egwu. Anyị chọrọ ibu ụzọ nweta nsogbu ndị dị otú ahụ. A na-achọpụta ahụhụ dị na nhazi ahụ n'oge nhazi-nlele anya na enwere ike idozi ya ngwa ngwa mgbe ahụ. Ịmekọ ụgwọ ọrụ teknụzụ chọrọ usoro na atụmatụ dị iche iche, yabụ anyị kpebiri na anyị agaghị anwale ya na arịrịọ ndọpụta.

Dabere na nhazi ọkwa a, anyị kpalitere ndepụta ndenye ego niile. Gafere Lint ma yigharịrị mmalite ya n'otu abalị: naanị ka o wepụta akụkọ banyere nsogbu ole dị na ọrụ ahụ. Anyị kwetara na-arụ ọrụ iche iche na oru ụgwọ, na Agbagharala nyocha nyocha nke Android Studio kpamkpam. Android Studio dị na Docker maka nyocha nyocha na-ada ụda na-atọ ụtọ, mana ọ na-akpata ọtụtụ nsogbu na nkwado. Mmelite ọ bụla na ụdị gam akporo Studio pụtara ọgụ na ahụhụ na-enweghị nghọta. Ọ dịkwa ike ịkwado ule nseta ihuenyo, n'ihi na ọbá akwụkwọ anaghị eguzosi ike ma nwee ihe ndị na-adịghị mma. Ewepụla ule nseta ihuenyo na ndetu nlele.

N'ihi ya, a hapụrụ anyị:

  • Mgbakọ ARK;
  • Nnwale Junit;
  • Nnwale akụrụngwa.

Gbanye cache dịpụrụ adịpụ

Enweghị nnukwu ego nlele, ihe niile bịara ka mma. Ma ọ dịghị oke na izu okè!

E kewala ngwa anyị n'ime ihe dịka modul gradle 150. Cache dịpụrụ adịpụ nke Gradle na-arụkarị ọrụ nke ọma na nke a, yabụ anyị kpebiri ịnwale ya.

Cache dịpụrụ adịpụ nke Gradle bụ ọrụ nwere ike ịmepụta arịa dị iche iche maka ọrụ onye ọ bụla na modul nke ọ bụla. Gradle, kama ịchịkọta koodu ahụ n'ezie, na-eji HTTP ịkụ aka na cache dịpụrụ adịpụ wee jụọ ma mmadụ emelarị ọrụ a. Ọ bụrụ ee, ọ na-ebudata nsonaazụ ya.

Ịgba cache dịpụrụ adịpụ nke Gradle dị mfe n'ihi na Gradle na-enye onyonyo Docker. Anyị jisiri ike mee nke a n'ime awa atọ.

Naanị ihe ị ga - eme bụ ịmalite Docker wee dee otu ahịrị n'ime ọrụ ahụ. Mana ọ bụ ezie na enwere ike ịmalite ya ngwa ngwa, ọ ga-ewe ogologo oge ka ihe niile rụọ ọrụ nke ọma.

N'okpuru ebe a bụ cache na-atụfu eserese.

Evolution nke CI n'ime otu mmepe mkpanaka

Ná mmalite, pasent nke cache na-efunahụ ihe dị ka 65. Mgbe izu atọ gasịrị, anyị jisiri ike ịbawanye uru a ruo 20%. Ọ tụgharịrị na ọrụ ndị ngwa gam akporo na-anakọta nwere ihe ndabere mgbanwe dị iche iche, n'ihi nke Gradle tụfuru cache ahụ.

Site na ijikọ cache ahụ, anyị mere ka ihe owuwu ahụ dị ngwa ngwa. Ma na mgbakwunye na mgbakọ, enwerekwa ule ngwá ọrụ, ha na-ewekwa ogologo oge. Ikekwe ọ bụghị ule niile ka a ga-eme maka arịrịọ ọ bụla dọkpụrụ. Iji chọpụta, anyị na-eji nyocha mmetụta.

Nyocha mmetụta

Na arịrịọ ịdọrọ, anyị na-anakọta git diff wee chọta modul Gradle gbanwetụrụ.

Evolution nke CI n'ime otu mmepe mkpanaka

Ọ bụ ihe ezi uche dị na ya na-agba ọsọ ule ngwá ọrụ na-elele modul gbanwere na modul niile dabere na ha. Ọ dịghị uru na-agba ọsọ ule maka ndị agbata obi modul: koodu ebe ahụ agbanwebeghị na ọ dịghị ihe nwere ike imebi.

Nnwale akụrụngwa adịghị mfe, n'ihi na ha ga-adịrịrị na modul Ngwa dị elu. Anyị ji heuristics nwere nyocha bytecode iji ghọta nke modul nke ule ọ bụla nwere.

Ịkwalite ọrụ nke ule ngwá ọrụ ka ha na-anwale naanị modul ndị metụtara were ihe dị ka izu asatọ.

Usoro iji mee ka nyocha dị ngwa arụ ọrụ nke ọma. Site na nkeji 45 anyị gbagoro ihe dị ka 15. Ọ bụ ihe dị mma ichere otu ụzọ n'ụzọ anọ nke elekere maka ihe owuwu.

Ma ugbu a, ndị mmepe amalitela mkpesa na ha aghọtaghị ihe owuwu a na-arụ ọrụ, ebe a ga-ahụ log ahụ, ihe mere ụlọ ahụ ji na-acha uhie uhie, nke ule dara, wdg.

Evolution nke CI n'ime otu mmepe mkpanaka

Nsogbu na nzaghachi na-ebelata mmepe, ya mere, anyị gbalịrị ịnye ozi doro anya na nkọwa gbasara PR ọ bụla ma wuo dịka o kwere mee. Anyị malitere site na nkwupụta na Bitbucket nye PR, na-egosi nke ụlọ dara na ihe kpatara ya, wee dee ozi ezubere iche na Slack. N'ikpeazụ, anyị mepụtara dashboard PR maka ibe ya na ndepụta nke ihe niile na-ewu ugbu a na ọkwa ha: kwụ n'ahịrị, na-agba ọsọ, daa ma ọ bụ mechaa. Ị nwere ike pịa ihe wuo ma banye na log ya.

Evolution nke CI n'ime otu mmepe mkpanaka

A nọrọ izu isii na nzaghachi zuru ezu.

Atụmatụ

Ka anyị gaa n'ihu n'akụkọ ihe mere eme na nso nso a. Mgbe anyị dozie okwu nzaghachi, anyị ruru ọkwa ọhụrụ - anyị kpebiri ịrụ ugbo emulator nke anyị. Mgbe enwere ọtụtụ ule na emulators, ọ na-esiri ha ike ijikwa. N'ihi ya, emulators anyị niile kwagara na ụyọkọ k8s nwere njikwa akụrụngwa na-agbanwe agbanwe.

Na mgbakwunye, enwere atụmatụ ndị ọzọ.

  • Weghachite Lint (na nyocha ndị ọzọ static). Anyị na-arụ ọrụ na ntụziaka a.
  • Gbaa ihe niile na ihe mgbochi PR ule ngwụcha ruo ọgwụgwụ na ụdị SDK niile.

Ya mere, anyị achọpụtala akụkọ ihe mere eme nke mmepe nke Continuous Integration na Avito. Ugbu a, achọrọ m inye ndụmọdụ site n'echiche nwere ahụmahụ.

Atụmatụ

Ọ bụrụ na m nwere ike inye naanị otu ndụmọdụ ọ ga-abụ nke a:

Biko kpachara anya na edemede shei!

Bash bụ ngwá ọrụ na-agbanwe agbanwe ma dị ike, ọ dị mma na ngwa ngwa ide edemede. Ma ị nwere ike ịdaba na ọnyà na ya, na, ọ dị mwute ikwu, anyị dabara na ya.

Ọ malitere site na edemede dị mfe nke na-arụ n'igwe anyị na-ewu:

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

Ma, dị ka ị maara, ihe niile na-etolite ma na-agbagwoju anya ka oge na-aga - ka anyị na-agba ọsọ otu edemede site na nke ọzọ, ka anyị gafere ụfọdụ paramita n'ebe ahụ - n'ikpeazụ anyị ga-ede ọrụ nke na-ekpebi na ọkwa nke bash nesting anyị nọ ugbu a n'usoro. itinye nkwuputa ndị dị mkpa, iji malite ya niile.

Evolution nke CI n'ime otu mmepe mkpanaka

Ị nwere ike iche n'echiche ụgwọ ọrụ ọrụ maka mmepe nke edemede ndị dị otú ahụ. Ana m adụ gị ọdụ ka ị ghara ịdaba n'ọnyà a.

Gịnị nwere ike dochie?

  • Asụsụ edemede ọ bụla. Dee na Python ma ọ bụ Kotlin Script ọzọ adaba n'ihi na ọ bụ mmemme, ọ bụghị scripts.
  • Ma ọ bụ kọwaa ihe mgbagha niile na-ewu n'ụdị Ọrụ gradle ahaziri iche maka oru ngo gi.

Anyị kpebiri ịhọrọ nhọrọ nke abụọ, ma ugbu a, anyị na-ehichapụ scripts bash niile ma na-ede ọtụtụ ọrụ gradle omenala.

Ndụmọdụ #2: Chekwaa akụrụngwa na koodu.

Ọ na-adaba adaba mgbe edobere ntọala njikọta na-aga n'ihu ọ bụghị na interface UI nke Jenkins ma ọ bụ TeamCity, wdg, kama n'ụdị faịlụ ederede ozugbo na ebe nchekwa ọrụ. Nke a na-enye versionability. Ọ gaghị esi ike ịlaghachi azụ ma ọ bụ wuo koodu n'alaka ọzọ.

Enwere ike ịchekwa scripts na oru ngo. Kedu ihe a ga-eme gburugburu ebe obibi?

Ndụmọdụ #3: Docker nwere ike inye aka na gburugburu ebe obibi.

Ọ ga-enyere ndị mmepe gam akporo aka; iOS enwebeghị otu, ọ dị nwute.

Nke a bụ ọmụmaatụ faịlụ docker dị mfe nwere jdk na 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

Mgbe edechara faịlụ Docker a (M ga-agwa gị ihe nzuzo, ịgaghị ede ya, kama dọpụta ya nke ọma na GitHub) wee kpọkọta onyonyo a, ị nweta igwe mebere nke ị nwere ike iwulite ngwa ahụ. ma gbaa ule Junit.

Isi ihe abụọ kpatara nke a ji bụrụ ezi uche bụ scalability na repeatability. N'iji docker, ị nwere ike ibulite ihe nrụpụta iri na abuo nke ga-enwe otu gburugburu ebe ọ dị na mbụ. Nke a na-eme ka ndụ ndị injinia CI dịkwuo mfe. Ọ dị mfe ịkwanye android-sdk n'ime docker, mana iji emulators ọ na-esikwu ike karị: ị ga-arụ ọrụ ntakịrị karịa (ma ọ bụ budata nke emechara na GitHub ọzọ).

NDỤMỌDỤ NKE 4: echefula na a naghị eme nyocha maka nyocha, kama maka ndị mmadụ.

Ngwa ngwa na, nke kachasị mkpa, nzaghachi doro anya dị ezigbo mkpa maka ndị mmepe: ihe mebiri, ihe ule dara, ebee ka m ga-ahụ ihe nrụpụta.

NDỤMỌDỤ #5: Dị irè mgbe ị na-emepe njikọ na-aga n'ihu.

Ghọta nke ọma ụdị njehie ịchọrọ igbochi, ego ole, oge, na oge kọmputa ị dị njikere imefu. Ntụnye ego na-ewe ogologo oge nwere ike, dịka ọmụmaatụ, yigharịrị otu abalị. Na ndị n'ime ha na-ejide adịghị oké mkpa njehie kwesịrị ịhapụ kpamkpam.

NDỤMỌDỤ #6: Jiri ngwá ọrụ emebere eme ihe.

Enwere ọtụtụ ụlọ ọrụ ugbu a na-enye igwe ojii CI.

Evolution nke CI n'ime otu mmepe mkpanaka

Nke a bụ ezigbo ngwọta maka obere ìgwè. Ịchọghị ịkwado ihe ọ bụla, kwụọ obere ego, wuo ngwa gị na ọbụna na-agba ọsọ ule ngwá ọrụ.

NDỤMỌDỤ #7: N'ime otu nnukwu ìgwè, ngwọta n'ime ụlọ na-aba uru karị.

Ma n'oge na-adịghị anya, ka otu ahụ na-etolite, ngwọta n'ime ụlọ ga-aba uru karị. Enwere otu nsogbu na mkpebi ndị a. Enwere iwu nke ibelata nlọghachi na akụ na ụba: na ọrụ ọ bụla, ọganihu ọ bụla na-esote na-esiwanye ike ma na-achọkwu ego.

Economics na-akọwa ndụ anyị dum, gụnyere njikọta na-aga n'ihu. Ewulitere m usoro ụgwọ ọrụ maka ọkwa ọ bụla nke mmepe nke njikọta na-aga n'ihu.

Evolution nke CI n'ime otu mmepe mkpanaka

O doro anya na ọganihu ọ bụla na-esiwanye ike. N'ileghachi anya na eserese a, ị nwere ike ịghọta na ọ dị mkpa ka e mepụta njikọta na-aga n'ihu dịka uto nke otu otu. Maka otu mmadụ abụọ, imefu ụbọchị 50 ịzụlite ugbo emulator dị n'ime bụ echiche na-adịghị mma. Ma n'otu oge ahụ, maka otu nnukwu ìgwè, ọ bụghị ime Continuous Integration ma ọlị bụkwa echiche ọjọọ, n'ihi na nsogbu ntinye, idozi nkwurịta okwu, wdg. ọ ga-ewekwa oge karịa.

Anyị malitere n'echiche bụ na a chọrọ akpaaka n'ihi na ndị mmadụ dị oke ọnụ, ha na-emehie ihe na ndị umengwụ. Mana ndị mmadụ na-akpakwa anya. Ya mere, otu nsogbu niile na-emetụta akpaaka.

  • Akpaaka dị oke ọnụ. Cheta usoro ọrụ.
  • A bịa na akpaaka, ndị mmadụ na-emehie ihe.
  • Mgbe ụfọdụ, ọ na-adị umengwụ imezigharị, n'ihi na ihe niile na-arụ ọrụ otu ahụ. Kedu ihe kpatara na-emeziwanye ihe ọ bụla ọzọ, gịnị kpatara njikọta a na-aga n'ihu?

Mana enwere m ọnụ ọgụgụ: ejidere njehie na 20% nke mgbakọ. Ma nke a abụghị n'ihi na ndị mmepe anyị na-ede koodu adịghị mma. Nke a bụ n'ihi na ndị mmepe nwere obi ike na ọ bụrụ na ha mehie ihe, ọ gaghị ejedebe na mmepe, a ga-ejide ya site na nlele akpaghị aka. N'ihi ya, ndị mmepe nwere ike itinyekwu oge na-ede koodu na ihe ndị na-adọrọ mmasị, kama ịgba ọsọ na ịnwale ihe na mpaghara.

Mụa Mmekọrịta Na-aga n'ihu. Ma n'ókè.

Site n'ụzọ, Nikolai Nesterov ọ bụghị nanị na-enye nnukwu akụkọ n'onwe ya, ma ọ bụkwa onye so na kọmitii mmemme AppsConf ma na-enyere ndị ọzọ aka ịkwadebe okwu bara uru nye gị. Enwere ike nyochaa izu oke na uru nke mmemme ogbako na-esote site na isiokwu dị na nhazi oge. Maka nkọwapụta, bịa na Infospace na Eprel 22-23.

isi: www.habr.com

Tinye a comment