Evolution of CI i le au atinaʻe feaveaʻi

I aso nei, o le tele o polokalama faakomepiuta ua atiaʻe i 'au. O tulaga mo le atinaʻeina o 'au e mafai ona faʻatusalia i foliga o se ata faigofie.

Evolution of CI i le au atinaʻe feaveaʻi

A uma ona e tusia lau code, e tatau ona e mautinoa:

  1. Faʻalautelega
  2. E le motusia se mea, e aofia ai le code na tusia e au paaga.

Afai ua ausia tulaga uma e lua, o lona uiga ua e i luga o le ala i le manuia. Ina ia faigofie ona siaki nei tulaga ma aua le alu ese mai le ala manuia, na matou o mai ma le Faʻaauau Faʻatasi.

O le CI ose galuega e te tu'ufa'atasia ai lau code i le aofa'iga o oloa fa'ailoga i taimi uma e mafai ai. Ma e le naʻo le tuʻufaʻatasia, ae faʻapea foi siaki pea o loʻo galue mea uma. Talu ai e manaʻomia lou siakiina tele ma masani, e aoga le mafaufau i le masini. E mafai ona e siakiina mea uma ma le lima, ae e le tatau, ma o le mea lea.

  • Tagata pele. O le itula o galuega a so'o se tagata fai polokalame e sili atu le taugata nai lo le itula o galuega a so'o se server.
  • E faia e tagata mea sese. O le mea lea, e ono tula'i mai tulaga pe a fai su'ega i le lala sese po'o le sese o le tautinoga na tu'ufa'atasia mo tagata su'e.
  • E paie tagata. Mai lea taimi i lea taimi, pe a uma laʻu galuega, e tulaʻi mai se manatu: “O le a le mea e tatau ona siaki? Na ou tusia ni laina se lua - e aoga mea uma! Ou te manatu o nisi o outou e i ai foi i nisi taimi ia manatu faapena. Ae e tatau ona e siaki i taimi uma.

Faʻafefea ona faʻatinoina ma atinaʻe le Faʻaauau Faʻatasi i le Avito mobile development team, pe faʻafefea ona latou alu mai le 0 i le 450 fau i le aso, ma faʻapipiʻi masini 200 itula i le aso, o le tala lea a Nikolai Nesterov (nnesterov) o se sui auai i suiga uma o le evolusione o le CI/CD Android application.

O le tala e faʻavae i luga o le faʻataʻitaʻiga o se faʻatonuga Android, ae o le tele o auala e faʻaoga foi i iOS.


I se tasi taimi, e toatasi le tagata na galue i le Avito Android team. I le faauigaga, na te leʻi manaʻomia se mea mai le Continuous Integration: e leai se tasi e faʻatasi ma.

Ae na faʻatupulaia le talosaga, faʻateleina galuega fou na faʻaalia, ma faʻatupulaia le 'au e tusa ai. I se taimi, ua oʻo i le taimi e faʻavaeina aloaia ai se faʻagasologa o le tuʻufaʻatasia o tulafono. Na filifili e faʻaaoga le Git flow.

Evolution of CI i le au atinaʻe feaveaʻi

O le manatu o le Git flow e lauiloa tele: o se poloketi e tasi le lala atinaʻe masani, ma mo foliga fou taʻitasi, e tipiina e le au atinaʻe se lala ese, tuuto i ai, tulei, ma pe a latou mananao e tuʻufaʻatasia a latou code i totonu o le atinaʻe lala, tatala se toso talosaga. Ina ia faʻasoa le malamalama ma faʻatalanoa auala, na matou faʻaalia ai le iloiloga o tulafono, o lona uiga, e tatau i paaga ona siaki ma faʻamaonia le code a le tasi.

Siaki

O le va'aia o le code i ou mata e manaia, ae le lava. O le mea lea, o loʻo faʻaalia ai siaki otometi.

  • Muamua, matou siaki Fonotaga ARK.
  • Le tele o Su'ega Junit.
  • Matou te mafaufau i le faʻasalalauga code, talu ai o loʻo matou faia suʻega.

Ina ia malamalama pe faʻafefea ona faʻatino nei siaki, seʻi o tatou vaʻai i le faʻagasologa o le atinaʻe i Avito.

E mafai ona faʻatusalia faʻatusa e pei o lenei:

  • E tusia e se tagata atiaʻe le code i luga o lana komepiuta. E mafai ona e fa'atautaia siaki tu'ufa'atasia i'inei - a le fa'atasi ma se commit hook, pe na'o le fa'atinoina o siaki i tua.
  • A maeʻa ona tulei e le tagata faʻapipiʻi le code, na te tatalaina se talosaga toso. Ina ia mafai ona aofia ai lona code i le atinaʻe paranesi, e tatau ona alu i se iloiloga code ma aoina le numera manaʻomia o faʻamaoniga. E mafai ona e fa'aogaina siaki ma faufale iinei: se'ia manuia uma faufale, e le mafai ona tu'u fa'atasi le talosaga toso.
  • A maeʻa ona tuʻufaʻatasia le talosaga toso ma faʻapipiʻi le code i le atinaʻeina, e mafai ona e filifilia se taimi talafeagai: mo se faʻataʻitaʻiga, i le po, pe a leai se saʻolotoga uma, ma faʻatautaia le tele o siaki e te manaʻo ai.

E leai se tasi na fiafia e su'e su'ega i la latou komepiuta feavea'i. A maeʻa e se tagata faʻapipiʻi se faʻaaliga, e manaʻo e vave tulei ma tatala se talosaga toso. Afai o le taimi nei o nisi siaki umi e faʻalauiloa, e le gata e le manaia tele, ae faʻagesegese foi le atinaʻe: aʻo siaki e le komepiuta se mea, e le mafai ona galue masani i ai.

Matou te fiafia tele e siaki siaki i le po, aua e tele taimi ma 'auʻaunaga, e mafai ona e feoai solo. Ae, o le mea e leaga ai, pe a oʻo i le atinaʻe o le code code, e itiiti ifo le faʻaosofia o le tagata atiaʻe e faʻaleleia mea sese na maua e CI. Na ou mafaufau i lea taimi ma lea taimi pe a ou tilotilo i mea sese uma na maua i le lipoti o le taeao o le a ou toe faaleleia i se aso mulimuli ane, aua o lea ua i ai se galuega fou i Jira lea ou te manaʻo e amata faia.

Afai e poloka e siaki se talosaga toso, ona lava lea o le faʻaosofia, aua seʻia oʻo i le lanu meamata, o le a le faʻaogaina le code, o lona uiga e le maeʻa le galuega.

O le iʻuga, na matou filifilia le taʻiala o loʻo i lalo: matou te faʻatautaia le tele o seti o siaki i le po, ma faʻalauiloa le sili ona faitio ia i latou ma, sili ona taua, o mea sili ona vave i luga o se talosaga toso. Ae matou te le tu ai iina-i se tulaga tutusa, matou te faʻamalieina le saoasaoa o siaki ina ia faʻafeiloaʻi mai le po e toso siaki talosaga.

I lena taimi, na vave maeʻa uma a matou fale, o lea na matou faʻapipiʻi ai le ARK build, Junit tests ma code coverage calculation e fai ma poloka mo le toso talosaga. Na matou kiina, mafaufau i ai, ma lafoaʻia tulafono faʻasalalau ona matou te manatu matou te le manaʻomia.

E lua aso na matou faʻatulagaina atoa ai le CI faʻavae (o le taimi nei o le faʻatusatusaga o le taimi e faʻatatau, e manaʻomia mo le fua).

Ina ua uma lena, na amata ona matou mafaufau atili - o matou siaki saʻo? O sa'o sa'o a tatou fa'atonuga ile toso?

Na matou amataina le fausiaina i luga o le tautinoga mulimuli a le lala lea na tatalaina ai le talosaga toso. Ae o faʻataʻitaʻiga o lenei tautinoga e mafai ona faʻaalia ai o le code na tusia e le tagata atiaʻe e aoga. Ae latou te le faamaonia na te lei solia se mea. O le mea moni, e tatau ona e siakiina le tulaga o le atinaʻe paranesi pe a uma ona tuʻufaʻatasia se vaega i totonu.

Evolution of CI i le au atinaʻe feaveaʻi

Ina ia faia lenei mea, na matou tusia se tusitusiga faigofie bash premerge.sh:

#!/usr/bin/env bash

set -e

git fetch origin develop

git merge origin/develop

O i'i o suiga fou uma mai le atina'e e na'o le toso i luga ma tu'u fa'atasi i le lala o lo'o iai nei. Na matou faʻaopoopoina le premerge.sh script o le laasaga muamua i fale uma ma amata siaki tonu le mea matou te mananaʻo ai, o lona uiga tu'ufa'atasiga.

E tolu aso e su'e ai le fa'afitauli, su'e se fofo, ma tusi le tala lea.

O le talosaga na atiina ae, o le tele ma le tele o galuega na aliali mai, o le 'au na faʻatupulaia, ma o nisi taimi na amata ai ona faʻavaivaia i matou e le premerge.sh. E iai suiga fete'ena'i le atina'e na malepe ai le faufale.

O se faʻataʻitaʻiga o le auala e tupu ai lenei mea:

Evolution of CI i le au atinaʻe feaveaʻi

E lua tagata atinaʻe e amata ona galulue i le taimi e tasi i foliga A ma B. O le faʻatupuina o le vaega A na te mauaina se mea e le faʻaaogaina i le poloketi answer() ma, e pei o se tama sikauti lelei, aveese. I le taimi lava e tasi, e faʻaopoopoina e le tagata faʻapipiʻi vaega B se valaau fou i lenei galuega i lana lala.

E fa'auma e le au atina'e a latou galuega ma tatala se talosaga toso i le taimi e tasi. Ua fa'alauiloa le fausiaina, siaki e le premerge.sh talosaga uma e toso e fa'atatau i le atina'e fou - o siaki uma e lanu meamata. A maeʻa lena, ua tuʻufaʻatasia le talosaga toso o le vaega A, o le talosaga toso o le vaega B ua tuʻufaʻatasia... Boom! Atia'e malologa ona o le atina'e code o lo'o i ai se vala'au i se galuega e le o iai.

Evolution of CI i le au atinaʻe feaveaʻi

A le o le a atiina ae, o le fa'alavelave fa'apitonu'u. E le mafai e le 'au atoa ona aoina se mea ma tu'uina atu mo su'ega.

Na tupu e masani ona ou galue i galuega tetele: auiliiliga, fesoʻotaiga, faʻamaumauga. O lona uiga, o aʻu na tusia na galuega ma vasega o loʻo faʻaogaina e isi tagata atinaʻe. Ona o lenei mea, na ou oo ai i tulaga faapena i le tele o taimi. Sa ou tautau foi lenei ata mo sina taimi.

Evolution of CI i le au atinaʻe feaveaʻi

Talu ai e le fetaui lenei mea ia i matou, na amata ona matou suʻesuʻeina filifiliga i le auala e puipuia ai lenei mea.

Aua le motusia atiina ae

O le filifiliga muamua: toe fausia uma talosaga toso pe a faʻafouina atinaʻe. Afai, i la tatou faʻataʻitaʻiga, o le talosaga toso ma le vaega A o le mea muamua lea e aofia i le atinaʻeina, o le toso talosaga o le vaega B o le a toe fausia, ma, e tusa ai, o le a toilalo siaki ona o se mea sese tuʻufaʻatasia.

Ina ia malamalama pe o le a le umi o lenei mea, mafaufau i se faʻataʻitaʻiga ma lua PRs. Matou te tatalaina PRs e lua: lua fale, lua faʻasologa o siaki. A maeʻa ona tuʻufaʻatasia le PR muamua i le atinaʻe, o le lona lua e manaʻomia ona toe fausia. I le aotelega, e lua PRs e mana'omia ni siaki se tolu: 2 + 1 = 3.

I le mataupu faavae, e lelei. Ae na matou tilotilo i fuainumera, ma o le tulaga masani i le matou 'au e 10 PRs tatala, ona o le numera o siaki o le aofaʻi o le alualu i luma: 10 + 9 +... + 1 = 55. O lona uiga, e talia le 10. PRs, e tatau ona e toe fau 55 taimi. Ma o se tulaga lelei lea, pe a pasi uma siaki i le taimi muamua, pe a leai se tasi na te tatalaina se talosaga toso faaopoopo ao faagasolo nei taseni.

Vaʻai faalemafaufau o oe o se tagata atiae e manaʻomia le muamua kiliki i luga o le "merge" button, aua afai e faia e se tuaoi lenei mea, e tatau ona e faʻatali seʻia toe faʻaoga uma fale ... Leai, e le aoga lena mea. , o le a matua faʻagesegese ai le atinaʻe.

Le auala lona lua e mafai: aoina talosaga toso pe a uma le iloiloga code. O lona uiga, e te tatalaina se talosaga toso, aoina le numera manaʻomia o faʻatagaga mai uo, faʻasaʻo mea e manaʻomia, ona faʻalauiloa lea o le fausiaina. Afai latou te manuia, o le talosaga toso e tuʻufaʻatasia ma atiina ae. I lenei tulaga, e leai ni toe amataina, ae o le tali mai e matua faʻagesegese. I le avea ai ma se atinaʻe, pe a ou tatalaina se talosaga toso, ou te vave manaʻo e vaʻai pe o le a aoga. Mo se faʻataʻitaʻiga, afai e le manuia se suʻega, e tatau ona e vave faʻaleleia. I le tulaga o le faatuai o le fausiaina, o faʻamatalaga e faʻagesegese, ma o le mea lea o le atinaʻe atoa. E le'i fetaui foi lea ma i matou.

O se taunuuga, na o le filifiliga lona tolu na totoe - uila. O matou tulafono uma, o matou punaoa uma o loʻo teuina i totonu o se fale teu oloa i luga o le Bitbucket server. E tusa ai, sa tatau ona matou atiaʻe se masini mo Bitbucket.

Evolution of CI i le au atinaʻe feaveaʻi

O lenei mea fa'apipi'i e fa'asili le faiga o le tu'ufa'atasiga o talosaga. Ole amataga ole tulaga masani: tatala le PR, faʻalauiloa faʻapotopotoga uma, faʻamaeʻaina le iloiloga o tulafono. Ae a maeʻa le iloiloga o tulafono ma filifili le tagata faʻapipiʻi e kiliki i luga o le "faʻafefiloi", siaki le plugin e faasaga i le atinaʻe o le setete na faʻatautaia siaki. Afai na fa'afouina le atina'e pe a uma ona fausia, o le a le fa'atagaina e le fa'apipi'i se talosaga toso fa'apea e tu'ufa'atasia i totonu o le lala autu. Na'o le toe amataina o le fausiaina o se atina'e lata mai.

Evolution of CI i le au atinaʻe feaveaʻi

I la matou faʻataʻitaʻiga ma suiga feteʻenaʻi, o ia fausiaina o le a le manuia ona o se faʻalavelave faʻapipiʻi. E tusa ai ma lea, e tatau i le tagata atiaʻe o le vaega B ona faʻasaʻo le code, toe amata siaki, ona faʻaaogaina lea e le plugin le talosaga toso.

Aʻo leʻi faʻatinoina lenei mea faʻapipiʻi, matou te averesi 2,7 iloiloga taʻavale i le toso talosaga. Faatasi ai ma le plugin sa i ai 3,6 faʻalauiloa. O lenei mea na fetaui ma i matou.

E taua le maitauina o lenei mea faʻapipiʻi e i ai se faʻaletonu: naʻo le toe amataina o le fausiaina i le tasi. O lona uiga, o loʻo i ai pea se tamai faamalama e mafai ona oʻo mai ai suiga feteenai. Ae o le faʻamoemoe o lenei mea e maualalo, ma na matou faia lenei fefaʻatauaʻiga i le va o le numera o le amataga ma le ono le manuia. I totonu o le lua tausaga e na o le tasi le fana, o lona uiga e le o se mea fua.

E lua vaiaso na matou tusia ai le lomiga muamua o le Bitbucket plugin.

Siaki fou

I le taimi nei, na faʻaauau pea le faʻatupulaia o la matou 'au. Ua faaopoopo siaki fou.

Sa matou mafaufau: aisea e faia ai ni mea sese pe afai e mafai ona puipuia? Ma o le mafuaaga lena na latou faatinoina su'esu'ega code static. Na matou amata i le lint, lea e aofia i le Android SDK. Ae i lena taimi na te leʻi iloa pe faʻafefea ona galue ma Kotlin code, ma ua uma ona matou maua le 75% o le tusi talosaga na tusia i Kotlin. O le mea lea, na faʻapipiʻiina ai mea faʻapipiʻi i le lint Android Studio siaki.

Ina ia faia lenei mea, e tatau ona matou faia le tele o faʻalavelave: ave le Android Studio, faʻapipiʻi i Docker ma taʻavale i luga o le CI ma se mataʻituina mataʻituina, ina ia manatu o loʻo tamoe i luga o se komepiuta moni. Ae sa aoga.

O le taimi foi lea na amata ai ona matou tusitusi tele su'ega meafaigaluega ma faatino su'ega fa'amalama. O le taimi lea e faia ai se faʻamatalaga faʻamalama mo se vaʻaiga laʻititi, ma o le suʻega e aofia ai le ave o se faʻamalama mai le vaʻaiga ma faʻatusatusa i le tulaga saʻo pika i pika. Afai e iai se eseesega, o lona uiga ua sese le faʻatulagaina i se mea poʻo se mea e sese i sitaili.

Ae o suʻega meafaigaluega ma suʻega faʻamalama e manaʻomia ona faʻatautaia i masini: i luga o emulators poʻo luga o masini moni. A manatu o lo'o tele su'ega ma fa'atino soo, e mana'omia se fa'ato'aga atoa. O le amataina o lau lava fa'ato'aga e tele naua galuega, o lea na matou maua ai se filifiliga ua saunia - Firebase Test Lab.

Firebase Test Lab

Na filifilia ona o le Firebase o se oloa Google, o lona uiga e tatau ona faʻatuatuaina ma e le mafai ona oti. O tau e talafeagai: $5 i le itula o le faagaoioiga o se masini moni, 1 $ i le itula o le faagaoioiga o se emulator.

E tusa ma le tolu vaiaso na fa'atino ai le Firebase Test Lab i totonu o le matou CI.

Ae na faʻaauau pea le tuputupu aʻe o le 'au, ma o le Firebase, o le mea e leaga ai, na amata ona faʻavaivaia i matou. I lena taimi, e leai sana SLA. O nisi taimi e fa'atali ai le Firebase se'ia maua fua le numera mana'omia o masini mo su'ega, ma e le'i amata fa'atino vave, e pei ona ma mana'o ai. O le fa'atalitali i le laina e o'o i le afa itula, ose taimi umi tele. Sa faia su'ega meafaigaluega i PR uma, o le tuai na matua fa'agesegese ai le atina'e, ona o'o mai ai lea o le pili masina ma se aofa'iga ta'amilosaga. I se tulaga lautele, na filifili e lafoai Firebase ma galue i totonu o le fale, talu ai ua lava le au.

Docker + Python + bash

Na matou aveina Docker, faʻapipiʻi emulators i totonu, tusia se polokalama faigofie i le Python, lea i le taimi saʻo e aumaia ai le numera manaʻomia o emulators i le manaʻomia lomiga ma taofi pe a manaʻomia. Ma, ioe, o ni nai tusi bash - o fea tatou te iai pe a aunoa ma i latou?

E lima vaiaso e fai ai a tatou lava siosiomaga su'ega.

O le i'uga, mo ta'iga toso uma sa i ai se lisi fa'apipi'i fa'apipi'iina o siaki:

  • Fonotaga ARK;
  • su'ega Junit;
  • Lint;
  • Android Studio siaki;
  • Su'ega meafaigaluega;
  • Su'ega ata.

O lenei mea na taofia ai le tele o fa'aletonu. I tulaga faʻapitoa na aoga mea uma, ae na faitio le au atiaʻe o le faʻatali mo iʻuga e umi tele.

O le a le umi o le umi tele? Na matou faʻapipiʻiina faʻamatalaga mai Bitbucket ma TeamCity i totonu o le faiga o auiliiliga ma iloa ai lena mea averesi taimi faatalitali 45 minute. O lona uiga, o se tagata atiae, pe a tatalaina se talosaga toso, e faatalitali i le averesi 45 minute mo le fausiaina o taunuuga. I loʻu manatu, e tele naua, ma e le mafai ona e galue faapena.

Ioe, sa matou filifili e faatelevave uma a matou faufale.

Tatou faatelevave

O le va'aia o fale e masani ona tu i se laina, o le mea muamua tatou te faia o le fa'atau nisi meafaigaluega - atina'e lautele e sili ona faigofie. Fausia na taofi le laina, ae o le taimi faʻatali na faʻaitiitia teisi, ona o nisi siaki latou lava e umi se taimi.

Aveese siaki e umi tele

E mafai ona maua e le matou Fa'aauau Fa'atasi ia ituaiga o mea sese ma fa'afitauli.

  • Le alu i ai. E mafai e le CI ona pu'eina se mea sese tu'ufa'atasi pe a le fausia se mea ona o suiga fete'ena'i. E pei ona ou fai atu, e leai se tasi e mafai ona faʻapotopotoina se mea, faʻagata le atinaʻe, ma e popole tagata uma.
  • Bug i le amio. Mo se faʻataʻitaʻiga, pe a fausia le talosaga, ae paʻu pe a e oomi se ki, pe le oomiina le ki. E leaga lea mea ona e mafai ona o'o atu se mea sese i le tagata fa'aoga.
  • Bug ile fa'atulagaina. Mo se fa'ata'ita'iga, o lo'o kiliki se fa'amau, ae ua si'i 10 pika i le agavale.
  • Faʻateleina aitalafu faʻapitoa.

Ina ua uma ona tilotilo i lenei lisi, na matou iloa ai e naʻo vaega muamua e lua e taua tele. Matou te manana'o e pu'e muamua ia fa'afitauli. Pepi i totonu o le faʻatulagaina e maua i le mamanu-toe iloilo tulaga ma faigofie ona faʻasaʻo i lena taimi. O le taulimaina o aitalafu faʻapitoa e manaʻomia ai se faʻagasologa eseese ma fuafuaga, o lea na matou filifili ai e le faʻataʻitaʻiina i luga o se talosaga toso.

Faʻavae i luga o lenei faʻavasegaga, matou te luluina le lisi atoa o siaki. Kolosi ese Lint ma tolopo le faalauiloaina i le po: ina ia maua ai se lipoti i le tele o faafitauli sa i ai i le poloketi. Na matou malilie e galulue faʻatasi ma le aitalafu faʻapitoa, ma O siaki a le Android Studio na matua lafoaia. Android Studio i Docker mo le faia o asiasiga e foliga manaia, ae mafua ai le tele o faʻafitauli i le lagolago. So'o se fa'afouga i le Android Studio versions o lona uiga o se tauiviga ma fa'aletonu le malamalama. Sa faigata foi ona lagolagoina suʻega faʻamalama, ona o le faletusi e leʻi mautu ma e iai faʻamatalaga sese. Ua aveese su'ega ata mai le lisi o siaki.

O se taunuuga, na tuua ai i matou:

  • Fonotaga ARK;
  • su'ega Junit;
  • Su'ega meafaigaluega.

Gradle fa'aoga mamao

A aunoa ma ni siaki mamafa, na lelei mea uma. Ae e leai se tapulaa i le atoatoa!

O la matou talosaga ua uma ona vaevaeina i le tusa ma le 150 gradle modules. Gradle remote cache e masani lava ona galue lelei i lenei tulaga, o lea na matou filifili ai e faʻataʻitaʻi.

Gradle mamao cache o se 'auʻaunaga e mafai ona faʻapipiʻiina mea faʻapitoa mo galuega taʻitasi i modules taʻitasi. Gradle, nai lo le faʻapipiʻiina moni o le code, faʻaaoga HTTP e tuʻituʻi ai le faʻaoga mamao ma fesili pe ua uma ona faia e se tasi lenei galuega. Afai e ioe, na'o le la'uina mai o le i'uga.

E faigofie le faʻaogaina o le cache mamao a Gradle aua e maua e Gradle se ata Docker. Na mafai ona matou faia lenei mea i totonu o le tolu itula.

Pau lava le mea e tatau ona e faia o le faʻalauiloa Docker ma tusi se laina se tasi i le poloketi. Ae e ui lava e mafai ona faʻalauiloa vave, e manaʻomia le tele o le taimi mo mea uma e lelei.

O lo'o i lalo le kalafi misia le cache.

Evolution of CI i le au atinaʻe feaveaʻi

I le amataga lava, o le pasene o cache misi e tusa ma le 65. Ina ua mavae le tolu vaiaso, na mafai ona matou faʻateleina lenei tau i le 20%. Na aliali mai o galuega o loʻo aoina e le Android app e iai ni faʻalagolagoga faʻapitoa, ona o le mea na misi ai e Gradle le faʻaoga.

E ala i le faʻafesoʻotaʻi o le cache, na matou faʻavaveina le fausiaina. Ae i le faaopoopo atu i le faʻapotopotoga, e iai foʻi suʻega meafaigaluega, ma e umi se taimi. Masalo e le o su'ega uma e mana'omia ona fai mo talosaga uma e toso. Ina ia iloa, matou te faʻaaogaina le auʻiliʻiliga o aʻafiaga.

Iloiloga a'afiaga

I luga o se talosaga toso, matou te aoina git diff ma suʻe le suiga o le Gradle modules.

Evolution of CI i le au atinaʻe feaveaʻi

E talafeagai le na'o le fa'atinoina o su'ega meafaigaluega e siaki ai le suiga o modules ma modules uma e fa'alagolago ia i latou. E leai se aoga i le faʻataʻitaʻiina o suʻega mo modules tuaoi: o le code iina e leʻi suia ma e leai se mea e mafai ona motusia.

E le faigofie tele su'ega meafaigaluega, aua e tatau ona tu'u i totonu o le vaega pito i luga ole Fa'aoga module. Na matou fa'aogaina heuristics fa'atasi ai ma su'esu'ega bytecode e malamalama ai po'o fea vaega e iai su'ega ta'itasi.

O le fa'aleleia o le fa'agaioiga o su'ega o meafaifa'aili ina ia na'o le fa'ata'ita'iina o modules e aofia ai e tusa ma le valu vaiaso.

O faiga e faatelevave ai asiasiga ua manuia. Mai le 45 minute na matou oʻo i luga e tusa ma le 15. O se mea masani le faʻatali o le kuata itula mo se fausiaina.

Ae o lea ua amata ona faitio le au atinaʻe latou te le malamalama po o fea fale o loʻo faʻalauiloaina, o fea e vaʻaia ai le ogalaau, aisea e mumu ai le fale, o le a le suʻega na le manuia, ma isi.

Evolution of CI i le au atinaʻe feaveaʻi

Faʻafitauli i faʻamatalaga faʻagesegese le atinaʻe, o lea na matou taumafai ai e tuʻuina atu faʻamatalaga manino ma auiliili e uiga i PR taʻitasi ma fausia pe a mafai. Na matou amata i faʻamatalaga i le Bitbucket i le PR, faʻaalia po o fea le fausiaina na le manuia ma pe aisea, ma tusia ni feʻau faʻatatau i Slack. I le faaiuga, na matou faia se PR dashboard mo le itulau ma se lisi o fale uma o loʻo taʻavale nei ma o latou tulaga: tuʻu, tamoe, paʻu pe maeʻa. E mafai ona e kiliki i luga o le fausiaina ma alu i lona ogalaau.

Evolution of CI i le au atinaʻe feaveaʻi

E ono vaiaso na fa'aalu i fa'amatalaga auiliili.

Fuafuaga

Sei o tatou agai atu i le tala faasolopito lata mai. Ina ua uma ona foia le mataupu o manatu faaalia, na matou ausia se tulaga fou - na matou filifili e fausia la matou lava faatoaga emulator. A tele suʻega ma emulators, e faigata ona pulea. O se taunuuga, o matou emulators uma na siitia atu i le k8s fuifui ma fetuutuunai pulega punaoa.

E le gata i lea, e iai isi fuafuaga.

  • Toe fo'i Lint (ma isi su'esu'ega tumau). O lea ua matou galulue i lea itu.
  • Faʻataʻitaʻi mea uma i luga o se poloka PR su'ega fa'ai'uga i luga ole SDK versions uma.

O lea la, ua matou suʻeina le talaʻaga o le atinaʻeina o le Faʻaauau Faʻatasi i Avito. O lea la ou te fia tuuina atu ni fautuaga mai se vaaiga poto masani.

Tala

Afai e mafai ona ou tuʻuina atu naʻo le tasi le fautuaga o le mea lenei:

Fa'amolemole fa'aeteete i fa'amatalaga atigi!

Bash o se meafaigaluega sili ona fetuutuunai ma mamana, e matua faigofie ma vave e tusi ai tusitusiga. Ae e mafai ona e pa'u i totonu o se mailei ma ia, ma, o le mea e leaga ai, na matou pauu i ai.

Na amata uma i tusitusiga faigofie na faʻaogaina i luga o matou masini faufale:

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

Ae, e pei ona e iloa, o mea uma e atiaʻe ma sili atu ona faigata i le aluga o taimi - seʻi o tatou faʻataʻitaʻiina le tasi tusitusiga mai le isi, seʻi o tatou pasi nisi faʻataʻitaʻiga iina - i le faaiuga e tatau ona tatou tusia se galuega e iloa ai po o le a le maualuga o le faga o le bash ua tatou i ai nei i le faasologa. e fa'aofi upusii e mana'omia, e amata uma ai.

Evolution of CI i le au atinaʻe feaveaʻi

E mafai ona e mafaufauina le tau o tagata faigaluega mo le atinaʻeina o ia tusitusiga. Ou te fautua atu ia te oe e aua le pau i lenei mailei.

O le a se mea e mafai ona suia?

  • Soo se gagana tusitusi. Tusi i Python poʻo le Kotlin Script sili atu ona faigofie aua o polokalame, ae le o tusitusiga.
  • Pe fa'amatala uma le faufau fa'atatau ile fomu Galuega fa'ailoga fa'apitoa mo lau galuega faatino.

Na matou filifili e filifili le filifiliga lona lua, ma o lea o loʻo matou tapeina uma faʻamaumauga a le bash ma tusia le tele o galuega masani.

Motugaafa #2: Teu aseta i le code.

E faigofie pe a le teuina le faʻaogaina o le Continuous Integration i totonu o le UI interface o Jenkins poʻo TeamCity, ma isi, ae i le tulaga o faila faila saʻo i le fale teu oloa. E maua ai le versionability. O le a le faigata ona toe fa'afo'i pe fausia le code i luga o se isi lala.

O tusitusiga e mafai ona teuina i totonu o se poloketi. O le a le mea e fai i le siosiomaga?

Motugaafa #3: Docker e mafai ona fesoasoani i le siosiomaga.

E mautinoa lava o le a fesoasoani i tagata atinaʻe Android; iOS e leʻi iai se tasi, o le mea e leaga ai.

O se faʻataʻitaʻiga lea o se faila faila faigofie e aofia ai le jdk ma 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

O le tusiaina o lenei faila Docker (O le a ou taʻu atu ia te oe se mealilo, e te le tau tusia, ae na o le tosoina mai le GitHub) ma faʻapipiʻi le ata, e te maua ai se masini masini e mafai ona e fausia ai le talosaga. ma fai su'ega Junit.

O mafuaaga autu e lua e talafeagai ai lenei mea o le scalability ma toe fai. I le faʻaaogaina o le docker, e mafai ona e vave faʻatupuina le tele o fale faufale o le ai ai le siosiomaga tutusa e pei o le muamua. O le mea lea e faigofie ai le olaga o inisinia CI. E fai lava si faigofie ona tulei le android-sdk i le docker, ae o emulators e sili atu ona faigata: e tatau ona e galue malosi (pe toe sii mai le mea ua maeʻa mai GitHub).

Motugaafa Numera 4: aua nei galo o asiasiga e le faia mo le lelei o asiasiga, ae mo tagata.

Faʻavave ma, sili ona taua, faʻamatalaga manino e taua tele mo le au atinaʻe: o le a le mea na gau, o le a le suʻega na le manuia, o fea e mafai ona ou vaʻai i le buildlog.

Motugaafa #5: Fa'ata'ita'i pe a atia'e le Fa'aauau Fa'atasi.

Malamalama manino po'o a ituaiga o mea sese e te mana'o e puipuia, pe fia alagaoa, taimi, ma le taimi komepiuta e te naunau e fa'aalu. O siaki e umi tele e mafai, mo se fa'ata'ita'iga, ona tolopo i le po. Ma oi latou e pu'eina mea sese e le taua tele e tatau ona lafoaia atoatoa.

Motugaafa #6: Fa'aoga meafaigaluega ua saunia.

E tele kamupani i le taimi nei o loʻo tuʻuina atu le cloud CI.

Evolution of CI i le au atinaʻe feaveaʻi

Ole fofo lelei lea mo 'au laiti. E te le manaʻomia le lagolagoina o se mea, naʻo le totogiina o sina tupe, fausia lau talosaga ma faʻatautaia suʻega meafaigaluega.

Motugaafa #7: I totonu o se 'au tele, o fofo ile fale e sili atu ona aoga.

Ae i se taimi mulimuli ane, a'o tuputupu a'e le 'au, o le a sili atu le manuia o fofo ile fale. E tasi le faafitauli i nei faaiuga. O loʻo i ai le tulafono o le faʻaitiitia o tupe maua i mea tau tamaoaiga: i soʻo se poloketi, o faʻaleleia mulimuli taʻitasi e sili atu ma sili atu ona faigata ma e manaʻomia ai le tele ma le tele o tupe faʻafaigaluega.

Economics o loʻo faʻamatalaina lo tatou olaga atoa, e aofia ai le Faʻaauau Faʻatasi. Sa ou fausia se fa'asologa o tau o tagata faigaluega mo la'asaga ta'itasi o le atina'eina o la matou Fa'aauau Fa'atasi.

Evolution of CI i le au atinaʻe feaveaʻi

E manino lava o soʻo se faʻaleleia atili ua atili faigata. A va'ai i lenei kalafi, e mafai ona e malamalama o le Fa'aauau Fa'atasi e mana'omia le atina'eina e tusa ai ma le fa'atupulaia o le tele o le 'au. Mo se 'au o tagata e to'alua, o le fa'aaluina o le 50 aso e atia'e ai se fa'ato'aga emulator i totonu o se manatu fa'aletonu. Ae i le taimi lava e tasi, mo se 'au tele, o le le faia o le Continuous Integration o se manatu leaga foi, aua o faʻafitauli tuʻufaʻatasia, faʻaleleia o fesoʻotaʻiga, ma isi. e sili atu le taimi e alu ai.

Na matou amata i le manatu e manaʻomia le masini ona e taugata tagata, latou te faia mea sese ma paie. Ae otometi foi tagata. O le mea lea, o faʻafitauli tutusa uma e faʻatatau ile masini.

  • Otometi e taugata. Manatua le faasologa o galuega.
  • A oo mai i le masini, e faia e tagata mea sese.
  • O nisi taimi e matua paie lava e otometi, aua e aoga mea uma i lena auala. Aisea e faʻaleleia ai se isi mea, aisea uma nei Faʻaauau Faʻatasi?

Ae o loʻo i ai aʻu fuainumera: o mea sese e maua i le 20% o faʻapotopotoga. Ma e le o le mea lea ona e le lelei ona tusia e le au atinaʻe le code. E mafua ona o le talitonuga o le au atinaʻe afai latou te faia se mea sese, e le iʻu i le atinaʻe, o le a maua i siaki otometi. E tusa ai, e mafai e le au atinaʻe ona faʻaalu le tele o le taimi e tusi ai code ma mea manaia, nai lo le taʻavale ma suʻeina se mea i le lotoifale.

Fa'ata'ita'i Fa'aauau Fa'atasi. Ae i le faautauta.

I le ala, Nikolai Nesterov e le gata ina tuuina atu ia lava lipoti sili, ae o se sui foi o le komiti polokalame AppsConf ma fesoasoani i isi e saunia ni lauga anoa mo oe. O le atoatoa ma le aoga o le isi polokalame konafesi e mafai ona iloiloina e autu i fa'asologa. Ma mo faʻamatalaga, sau ile Infospace ile Aperila 22-23.

puna: www.habr.com

Faaopoopo i ai se faamatalaga