Evolution CI anns an sgioba leasachaidh gluasadach

An-diugh, tha a’ mhòr-chuid de thoraidhean bathar-bog air an leasachadh ann an sgiobaidhean. Faodar na cumhaichean airson leasachadh sgioba soirbheachail a riochdachadh ann an cruth diagram sìmplidh.

Evolution CI anns an sgioba leasachaidh gluasadach

Aon uair ‘s gu bheil thu air do chòd a sgrìobhadh, feumaidh tu dèanamh cinnteach gu bheil e:

  1. Работает.
  2. Cha bhith e a’ briseadh dad, a’ toirt a-steach a’ chòd a sgrìobh do cho-obraichean.

Ma thèid an dà shuidheachadh a choileanadh, tha thu air an t-slighe gu soirbheachas. Gus sùil a chumail air na suidheachaidhean sin gu furasta agus gun a bhith a’ gluasad air falbh bhon t-slighe prothaideach, thàinig sinn suas le Continuous Integration.

Is e sruth-obrach a th’ ann an CI far am bi thu ag amalachadh do chòd a-steach don chòd toraidh iomlan cho tric ‘s a ghabhas. Agus chan e a-mhàin gu bheil thu a 'ceangal a-steach, ach cuideachd daonnan a' dèanamh cinnteach gu bheil a h-uile càil ag obair. Leis gu feum thu sgrùdadh mòr agus gu tric, is fhiach smaoineachadh air fèin-ghluasad. Faodaidh tu sgrùdadh a dhèanamh air a h-uile càil le làimh, ach cha bu chòir dhut, agus seo carson.

  • A mhuinntir ghràdhach. Tha uair a thìde de dh'obair prògramadair sam bith nas daoire na uair a thìde de dh'obair neach-frithealaidh sam bith.
  • Bidh daoine a’ dèanamh mhearachdan. Mar sin, dh’ fhaodadh suidheachaidhean èirigh nuair a chaidh deuchainnean a ruith air a’ mheur cheàrr no nuair a chaidh an gealladh ceàrr a chuir ri chèile airson luchd-dearbhaidh.
  • Tha daoine leisg. Bho àm gu àm, nuair a chuireas mi crìoch air gnìomh, tha an smuain ag èirigh: “Dè a th’ ann airson sgrùdadh? Sgrìobh mi dà loidhne - tha a h-uile dad ag obair! Tha mi a’ smaoineachadh gu bheil smuaintean mar sin aig cuid agaibh cuideachd uaireannan. Ach bu chòir dhut an-còmhnaidh sgrùdadh a dhèanamh.

Mar a chaidh Integration Leantainneach a chuir an gnìomh agus a leasachadh ann an sgioba leasachaidh gluasadach Avito, mar a chaidh iad bho 0 gu 450 togail gach latha, agus a bhios innealan togail a’ cruinneachadh 200 uair san latha, arsa Nikolai Nesterov (nnesterov) na chom-pàirtiche anns a h-uile atharrachadh mean-fhàs den tagradh CI / CD Android.

Tha an sgeulachd stèidhichte air eisimpleir òrdugh Android, ach tha a’ mhòr-chuid de na dòighean-obrach iomchaidh air iOS cuideachd.


Uair dhe na h-uairean, bha aon neach ag obair ann an sgioba Avito Android. Le mìneachadh, cha robh feum aige air dad bho Amalachadh Leantainneach: cha robh duine ann airson amalachadh leis.

Ach dh'fhàs an tagradh, nochd barrachd is barrachd ghnìomhan ùra, agus dh'fhàs an sgioba a rèir sin. Aig àm air choreigin, tha an t-àm ann pròiseas amalachadh còd a stèidheachadh nas foirmeile. Chaidh co-dhùnadh sruth Git a chleachdadh.

Evolution CI anns an sgioba leasachaidh gluasadach

Tha bun-bheachd sruth Git aithnichte: tha aon mheur leasachaidh cumanta aig pròiseact, agus airson gach feart ùr, bidh luchd-leasachaidh a’ gearradh meur air leth, a’ gealltainn dha, a’ putadh, agus nuair a tha iad airson an còd aca a chur còmhla ris a’ mheur leasachaidh, fosgail a tarraing iarrtas. Gus eòlas a cho-roinn agus dòighean-obrach a dheasbad, thug sinn a-steach ath-sgrùdadh còd, is e sin, feumaidh co-obraichean còd a chèile a sgrùdadh agus a dhearbhadh.

Seicichean

Tha e fionnar a bhith a’ faicinn còd le do shùilean, ach chan eil gu leòr. Mar sin, thathas a’ toirt a-steach sgrùdaidhean fèin-ghluasadach.

  • An toiseach, nì sinn sgrùdadh Co-chruinneachadh ARK.
  • Tòrr Deuchainnean Junit.
  • Bidh sinn a’ beachdachadh air còmhdach còd, leis gu bheil sinn a’ ruith dheuchainnean.

Gus tuigsinn mar a bu chòir na sgrùdaidhean sin a bhith air an ruith, leig dhuinn sùil a thoirt air a 'phròiseas leasachaidh ann an Avito.

Faodar a riochdachadh gu sgeamach mar seo:

  • Bidh leasaiche a’ sgrìobhadh còd air an laptop aige. Faodaidh tu sgrùdaidhean amalachaidh a ruith an seo - an dàrna cuid le dubhan gealltanas, no dìreach seicichean a ruith air a’ chùl.
  • Às deidh don leasaiche an còd a phutadh, bidh e a ’fosgladh iarrtas tarraing. Gus an tèid a chòd a thoirt a-steach don mheur leasachaidh, feumar a dhol tro sgrùdadh còd agus an àireamh de dhearbhadh a tha a dhìth a chruinneachadh. 'S urrainn dhut seicichean is toglaichean a chur an comas an seo: gus am bi a h-uile togail soirbheachail, chan urrainnear an t-iarrtas tarraing a chur còmhla.
  • Às deidh an t-iarrtas tarraing a thoirt còmhla agus an còd a thoirt a-steach don leasachadh, faodaidh tu àm iomchaidh a thaghadh: mar eisimpleir, air an oidhche, nuair a tha na frithealaichean uile an-asgaidh, agus ruith nas urrainn dhut de sgrùdaidhean.

Cha robh duine dèidheil air sganaidhean a ruith air an laptop aca. Nuair a tha leasaiche air crìoch a chuir air feart, tha e airson a phutadh gu sgiobalta agus iarrtas tarraing fhosgladh. Ma thèid cuid de sgrùdaidhean fada a chuir air bhog aig an àm seo, chan e a-mhàin gu bheil seo gu math tlachdmhor, ach tha e cuideachd a ’slaodadh sìos leasachadh: fhad‘ s a tha an laptop a ’sgrùdadh rudeigin, tha e do-dhèanta obrachadh air mar as trice.

Chòrd e rinn gu mòr a bhith a’ ruith sgrùdaidhean air an oidhche, leis gu bheil tòrr ùine agus frithealaichean ann, faodaidh tu gluasad timcheall. Ach, gu mì-fhortanach, nuair a thèid an còd feart a leasachadh, tha mòran nas lugha de bhrosnachadh aig an leasaiche na mearachdan a lorg CI a cheartachadh. Bho àm gu àm ghlac mi mi fhìn a’ smaoineachadh nuair a choimhead mi air na mearachdan uile a chaidh a lorg ann an aithisg na maidne a bhithinn gan càradh uaireigin às deidh sin, oir a-nis tha gnìomh ùr fionnar ann an Jira a tha mi dìreach airson tòiseachadh a ’dèanamh.

Ma chuireas sgrùdaidhean bacadh air iarrtas tarraing, tha brosnachadh gu leòr ann, oir gus an tionndaidh na togalaichean uaine, cha tèid an còd a-steach a leasachadh, rud a tha a 'ciallachadh nach tèid an obair a chrìochnachadh.

Mar thoradh air an sin, thagh sinn an ro-innleachd a leanas: bidh sinn a 'ruith an t-seata as motha de sgrùdaidhean air an oidhche, agus a' cur air bhog an fheadhainn as cudromaiche dhiubh agus, nas cudromaiche, an fheadhainn as luaithe air iarrtas tarraing. Ach cha bhith sinn a’ stad an sin - aig an aon àm, bidh sinn a’ dèanamh an astar as fheàrr de sgrùdaidhean gus an gluasad bho mhodh oidhche gus seicichean iarrtas a tharraing.

Aig an àm sin, chaidh na togalaichean againn uile a chrìochnachadh gu math luath, agus mar sin thug sinn a-steach togail ARK, deuchainnean Junit agus àireamhachadh còmhdach còd mar neach-bacadh airson an iarrtas tarraing. Thionndaidh sinn air, smaoinich sinn mu dheidhinn, agus thrèig sinn còmhdach còd oir bha sinn den bheachd nach robh feum againn air.

Thug e dà latha dhuinn an CI bunaiteach a stèidheachadh gu tur (an-seo tha an tuairmse ùine tuairmseach, a tha a dhìth airson sgèile).

Às deidh sin, thòisich sinn a 'smaoineachadh nas fhaide - a bheil sinn eadhon a' dèanamh sgrùdadh ceart? A bheil sinn a’ ruith togail air iarrtasan tarraing gu ceart?

Thòisich sinn air an togail air a’ ghealladh mu dheireadh den mheur às an deach an t-iarrtas tarraing fhosgladh. Ach chan urrainn dha deuchainnean den ghealladh seo ach sealltainn gu bheil an còd a sgrìobh an leasaiche ag obair. Ach chan eil iad a’ dearbhadh nach do bhris e dad. Gu dearbh, feumaidh tu sgrùdadh a dhèanamh air staid a’ mheur leasachaidh às deidh feart a bhith air a chur còmhla ris.

Evolution CI anns an sgioba leasachaidh gluasadach

Gus seo a dhèanamh, sgrìobh sinn sgriobt bash sìmplidh premerge.sh:

#!/usr/bin/env bash

set -e

git fetch origin develop

git merge origin/develop

An seo tha na h-atharrachaidhean as ùire bho leasachadh dìreach air an tarraing suas agus air an cur còmhla ris a’ mheur làithreach. Chuir sinn ris an sgriobt premerge.sh mar a’ chiad cheum anns a h-uile togail agus thòisich sinn a’ sgrùdadh dè dìreach a tha sinn ag iarraidh, is e sin amalachadh.

Thug e trì latha an duilgheadas a lorg gu h-ionadail, fuasgladh a lorg, agus an sgriobt seo a sgrìobhadh.

Leasaich an tagradh, nochd barrachd is barrachd ghnìomhan, dh’ fhàs an sgioba, agus thòisich premerge.sh uaireannan gar leigeil sìos. Bha atharrachaidhean connspaideach aig Leasachadh a bhris an togalach.

Eisimpleir de mar a thachras seo:

Evolution CI anns an sgioba leasachaidh gluasadach

Bidh dà leasaiche aig an aon àm a’ tòiseachadh ag obair air feartan A agus B. Bidh leasaiche feart A a’ faighinn a-mach feart nach deach a chleachdadh sa phròiseact answer() agus, mar dheagh bhalach scout, bheir e air falbh e. Aig an aon àm, bidh leasaiche feart B a’ cur gairm ùr ris a’ ghnìomh seo na mheur.

Bidh luchd-leasachaidh a 'crìochnachadh an cuid obrach agus a' fosgladh iarrtas tarraing aig an aon àm. Tha na togalaichean air an cur air bhog, bidh premerge.sh a’ sgrùdadh an dà chuid iarrtasan tarraing a thaobh an stàit leasachaidh as ùire - tha a h-uile sgrùdadh uaine. Às deidh sin, tha iarrtas tarraing feart A air a chur còmhla, tha iarrtas tarraing feart B air a chur còmhla ... Boom! Leasaich briseadh leis gu bheil an còd leasachaidh a’ toirt a-steach gairm gu gnìomh nach eil ann.

Evolution CI anns an sgioba leasachaidh gluasadach

Nuair nach eil e a 'dol a leasachadh, tha e mòr-thubaist ionadail. Chan urrainn don sgioba gu lèir dad a chruinneachadh agus a chuir a-steach airson deuchainn.

Tha e mar sin a thachair gun robh mi gu tric ag obair air gnìomhan bun-structair: anailisean, lìonra, stòran-dàta. Is e sin, is mise a sgrìobh na gnìomhan agus na clasaichean sin a bhios luchd-leasachaidh eile a’ cleachdadh. Air sgàth seo, lorg mi mi fhìn ann an suidheachaidhean coltach ris gu math tric. Bha eadhon an dealbh seo crochte airson greiseag.

Evolution CI anns an sgioba leasachaidh gluasadach

Leis nach robh seo freagarrach dhuinn, thòisich sinn a 'sgrùdadh roghainnean air mar a chuireas casg air seo.

Ciamar nach briseadh a leasachadh

A ’chiad roghainn: ath-thogail a h-uile iarrtas tarraing nuair a thèid ùrachadh a leasachadh. Mas e, nar n-eisimpleir, an t-iarrtas tarraing le feart A a’ chiad fhear a thèid a thoirt a-steach don leasachadh, thèid iarrtas tarraing feart B ath-thogail, agus, mar sin, fàilligidh na sgrùdaidhean air sgàth mearachd cruinneachaidh.

Gus tuigsinn dè cho fada ‘s a bheir seo, beachdaich air eisimpleir le dà PR. Bidh sinn a’ fosgladh dà PR: dà thogail, dà ruith de sgrùdaidhean. Às deidh a 'chiad PR a bhith air a chur còmhla ri leasachadh, feumar an dàrna fear ath-thogail. Gu h-iomlan, feumaidh dà PR trì ruith de sgrùdaidhean: 2 + 1 = 3.

Ann am prionnsabal, tha e gu math. Ach thug sinn sùil air na staitistig, agus b 'e an suidheachadh àbhaisteach san sgioba againn 10 PR fosgailte, agus an uairsin is e an àireamh de sgrùdaidhean suim an adhartais: 10 + 9 + ... + 1 = 55. Is e sin, gabhail ri 10 PR, feumaidh tu ath-thogail 55 tursan. Agus tha seo ann an suidheachadh air leth math, nuair a thèid a h-uile sgrùdadh seachad air a’ chiad uair, nuair nach fosgail duine iarrtas tarraing a bharrachd fhad ‘s a tha na dusanan sin gan giullachd.

Smaoinich ort fhèin mar leasaiche a dh’ fheumas a bhith mar a’ chiad neach a bhriogas air a’ phutan “tighinn còmhla”, oir ma nì nàbaidh seo, feumaidh tu feitheamh gus an tèid na togalaichean gu lèir troimhe a-rithist... Chan obraich, chan obraich sin , cuiridh e gu mòr maill air leasachadh.

An dàrna dòigh comasach: cruinnich iarrtasan tarraing às deidh ath-sgrùdadh còd. Is e sin, bidh thu a’ fosgladh iarrtas tarraing, cruinnich an àireamh de cheadan riatanach bho cho-obraichean, ceartaich na tha a dhìth, agus an uairsin cuir air bhog na togalaichean. Ma shoirbhicheas leotha, thèid an t-iarrtas tarraing a chur còmhla ri leasachadh. Anns a 'chùis seo, chan eil ath-thòiseachadh a bharrachd ann, ach tha am fios air ais air a lughdachadh gu mòr. Mar leasaiche, nuair a dh’ fhosglas mi iarrtas tarraing, tha mi sa bhad airson faicinn a bheil e gu bhith ag obair. Mar eisimpleir, ma dh’ fhailicheas deuchainn, feumaidh tu a chàradh gu sgiobalta. Ann an cùis togail dàil, bidh fios air ais a’ slaodadh sìos, agus mar sin an leasachadh gu lèir. Cha do chòrd seo rinn idir.

Mar thoradh air an sin, cha robh ach an treas roghainn air fhàgail - baidhsagal. Tha a h-uile còd againn, na stòran againn uile air an stòradh ann an stòr air frithealaiche Bitbucket. Mar sin, bha againn ri plugan a leasachadh airson Bitbucket.

Evolution CI anns an sgioba leasachaidh gluasadach

Tha am plugan seo a’ dol thairis air an uidheamachd airson iarrtasan tarraing a thoirt còmhla. Tha an toiseach àbhaisteach: tha an PR a’ fosgladh, tha a h-uile co-chruinneachadh air a chuir air bhog, tha ath-sgrùdadh còd air a chrìochnachadh. Ach an dèidh don ath-sgrùdadh còd a bhith air a chrìochnachadh agus an leasaiche a 'co-dhùnadh briogadh air "merge", bidh am plugan a' sgrùdadh dè an stàit leasachaidh a chaidh na sgrùdaidhean a ruith. Ma tha leasachadh air a bhith air ùrachadh às deidh an togail, cha leig am plugan leis an iarrtas tarraing sin a thoirt a-steach don phrìomh mheur. Bidh e dìreach ag ath-thòiseachadh togalaichean leasachadh an ìre mhath o chionn ghoirid.

Evolution CI anns an sgioba leasachaidh gluasadach

Anns an eisimpleir againn le atharrachaidhean connspaideach, fàillidh an leithid de thogalaichean air sgàth mearachd cruinneachaidh. A rèir sin, feumaidh leasaiche feart B an còd a cheartachadh, na sgrùdaidhean ath-thòiseachadh, an uairsin cuiridh am plugan an t-iarrtas tarraing an sàs gu fèin-ghluasadach.

Mus cuir sinn am plugan seo an gnìomh, rinn sinn cuibheas de 2,7 ruith ath-bhreithneachaidh gach iarrtas tarraing. Leis a’ plugan bha 3,6 air a chuir air bhog. Bha seo freagarrach dhuinn.

Is fhiach a bhith mothachail gu bheil ana-cothrom aig a’ plugan seo: cha bhith e ag ath-thòiseachadh an togail ach aon turas. Is e sin, tha uinneag bheag ann fhathast far am faod atharrachaidhean connspaideach a thighinn air adhart. Ach tha an coltas gu bheil seo ìosal, agus rinn sinn a’ mhalairt seo eadar an àireamh de thòiseachadh agus an coltas gum fàiligeadh. Ann an dà bhliadhna cha do loisg e ach aon turas, agus mar sin is dòcha nach robh e dìomhain.

Thug e dà sheachdain dhuinn a’ chiad dreach den plugan Bitbucket a sgrìobhadh.

Sgrùdaidhean ùra

Aig an aon àm, lean an sgioba againn a’ fàs. Chaidh seicichean ùra a chur ris.

Bha sinn a’ smaoineachadh: carson a nì thu mearachdan mas urrainnear an casg? Agus is ann air sgàth sin a chuir iad an gnìomh mion-sgrùdadh còd statach. Thòisich sinn le lint, a tha air a ghabhail a-steach san Android SDK. Ach aig an àm sin cha robh fios aige ciamar a dh'obraicheadh ​​​​le Kotlin code idir, agus bha 75% den iarrtas againn sgrìobhte ann an Kotlin mu thràth. Mar sin, chaidh feadhainn a chaidh a thogail a-steach a chur ri lint Android Studio sgrùdadh.

Gus seo a dhèanamh, bha againn ri tòrr perverting a dhèanamh: gabh Android Studio, pacaich e ann an Docker agus ruith e air CI le monitor brìgheil, gus am bi e den bheachd gu bheil e a’ ruith air fìor laptop. Ach dh’obraich e.

B’ ann aig an àm seo cuideachd a thòisich sinn a’ sgrìobhadh tòrr deuchainnean ionnsramaid agus air an cur an gnìomh deuchainn glacadh-sgrìn. Seo nuair a thèid dealbh-sgrìn iomraidh a chruthachadh airson sealladh beag air leth, agus tha an deuchainn a’ toirt a-steach a bhith a’ toirt dealbh-sgrìn bhon t-sealladh agus ga choimeas ris an ìre àbhaisteach dìreach piogsail le piogsail. Ma tha eadar-dhealachadh ann, tha e a’ ciallachadh gu bheil an cruth air a dhol ceàrr am badeigin no gu bheil rudeigin ceàrr anns na stoidhlichean.

Ach feumar deuchainnean ionnstramaid agus deuchainnean glacadh-sgrìn a ruith air innealan: air emuladairean no air innealan fìor. Leis gu bheil tòrr deuchainnean ann agus gu bheil iad air an ruith gu tric, tha feum air tuathanas slàn. Tha tòiseachadh air an tuathanas agad fhèin ro dhian air saothair, agus mar sin lorg sinn roghainn deiseil - Firebase Test Lab.

Firebase deuchainn lab

Chaidh a thaghadh leis gur e toradh Google a th’ ann an Firebase, a’ ciallachadh gum bu chòir dha a bhith earbsach agus eu-coltach gum bàsaich e gu bràth. Tha na prìsean reusanta: $5 san uair de dh’ inneal fìor, 1 $ san uair de dh’ obair emuladair.

Thug e timcheall air trì seachdainean Firebase Test Lab a chuir an sàs anns an CI againn.

Ach lean an sgioba a 'fàs, agus Firebase, gu mì-fhortanach, thòisich sinn a leigeil sìos. Aig an àm sin, cha robh SLA sam bith aige. Aig amannan thug Firebase oirnn feitheamh gus an robh an àireamh riatanach de dh ’innealan an-asgaidh airson deuchainnean, agus cha do thòisich iad gan cur gu bàs sa bhad, mar a bha sinn ag iarraidh. Thug feitheamh san loidhne suas ri leth uair a thìde, rud a tha gu math fada. Chaidh deuchainnean ionnstramaid a ruith air a h-uile PR, chuir dàil gu mòr maill air an leasachadh, agus an uairsin thàinig am bile mìosail le suim chruinn. San fharsaingeachd, chaidh co-dhùnadh Firebase a thrèigsinn agus obair a-staigh, leis gu robh an sgioba air fàs gu leòr.

Docker + Python + bash

Thug sinn Docker, emuladairean lìonta a-steach dha, sgrìobh sinn prògram sìmplidh ann am Python, a bheir suas aig an àm cheart an àireamh riatanach de emuladairean anns an dreach a tha a dhìth agus a chuireas stad orra nuair a bhios feum air. Agus, gu dearbh, sgriobt no dhà bash - càite am biodh sinn às an aonais?

Thug e còig seachdainean gus an àrainneachd deuchainn againn fhèin a chruthachadh.

Mar thoradh air an sin, airson a h-uile iarrtas tarraing bha liosta farsaing de sgrùdaidhean casg-bacadh:

  • co-chruinneachadh ARK;
  • deuchainnean Junit;
  • Lint;
  • Android Studio sgrùdaidhean;
  • deuchainnean ionnstramaid;
  • Deuchainnean glacadh-sgrìn.

Chuir seo casg air mòran bhriseadh a dh’ fhaodadh a bhith ann. Gu teicnigeach dh'obraich a h-uile dad, ach ghearain an luchd-leasachaidh gu robh am feitheamh airson toraidhean ro fhada.

Dè cho fada 'sa tha e ro fhada? Chuir sinn suas dàta bho Bitbucket agus TeamCity a-steach don t-siostam anailis agus thuig sinn sin ùine feitheimh cuibheasach 45 mionaid. Is e sin, bidh leasaiche, nuair a dh'fhosglas e iarrtas tarraing, a 'feitheamh gu cuibheasach 45 mionaid airson na toraidhean togail. Nam bheachd-sa, tha seo tòrr, agus chan urrainn dhut a bhith ag obair mar sin.

Gu dearbh, chuir sinn romhainn na togalaichean againn uile a luathachadh.

Dèanamaid luaths

A’ faicinn gu bheil togalaichean gu tric a’ seasamh ann an ciudha, is e a’ chiad rud a nì sinn cheannaich barrachd bathar-cruaidh - Is e leasachadh farsaing an rud as sìmplidh. Sguir togalaichean a’ ciudha, ach cha do lughdaich an ùine feitheimh ach beagan, oir thug cuid de sgrùdaidhean iad fhèin ùine mhòr.

A’ toirt air falbh seicichean a bheir ro fhada

Dh’ fhaodadh an aonachadh leantainneach againn na mearachdan agus na duilgheadasan sin a ghlacadh.

  • Gun a bhith a’ dol. Faodaidh CI mearachd cruinneachaidh a ghlacadh nuair nach tog rudeigin ri linn atharrachaidhean connspaideach. Mar a thuirt mi mu thràth, an uairsin chan urrainn dha duine dad a chruinneachadh, stadaidh leasachadh, agus bidh a h-uile duine a ’fàs iomagaineach.
  • Bug ann an giùlan. Mar eisimpleir, nuair a thèid an tagradh a thogail, ach tuitidh e nuair a bhrùthas tu putan, no nuair nach eil am putan air a bhrùthadh idir. Tha seo dona oir faodaidh a leithid de bhiast ruigsinn air an neach-cleachdaidh.
  • Bug ann an cruth. Mar eisimpleir, thèid putan a bhriogadh, ach ghluais e 10 piogsail air an taobh chlì.
  • Meudachadh ann am fiachan teicnigeach.

Às deidh dhuinn coimhead air an liosta seo, thuig sinn nach eil ach a’ chiad dà phuing deatamach. Tha sinn airson na duilgheadasan sin a ghlacadh an toiseach. Lorgar biastagan sa chruth aig ìre ath-bhreithneachaidh dealbhaidh agus faodar an ceartachadh gu furasta an uairsin. Feumaidh dèiligeadh ri fiachan teicnigeach pròiseas agus dealbhadh air leth, agus mar sin chuir sinn romhainn gun a bhith ga dhearbhadh air iarrtas tarraing.

Stèidhichte air an t-seòrsachadh seo, chrath sinn an liosta iomlan de sgrùdaidhean. Chaidh e thairis air Lint agus chuir e air bhog e thar oidhche: dìreach airson gun toireadh e aithisg a-mach air cia mheud duilgheadas a bha sa phròiseact. Dh'aontaich sinn a bhith ag obair air leth leis na fiachan teicnigeach, agus Chaidh sgrùdaidhean Android Studio a thrèigsinn gu tur. Tha Android Studio ann an Docker airson sgrùdaidhean a ruith a ’coimhead inntinneach, ach ag adhbhrachadh tòrr trioblaid mar thaic. Tha ùrachadh sam bith air dreachan Android Studio a’ ciallachadh strì le biastagan nach gabh a thuigsinn. Bha e duilich cuideachd taic a thoirt do dheuchainnean glacadh-sgrìn, leis nach robh an leabharlann gu math seasmhach agus bha rudan ceàrr ann. Chaidh deuchainnean glacadh-sgrìn a thoirt air falbh bhon liosta-sgrùdaidh.

Mar thoradh air an sin, bha sinn air ar fàgail le:

  • co-chruinneachadh ARK;
  • deuchainnean Junit;
  • Deuchainnean innealan.

Gradle iomallach tasgadan

Às aonais sgrùdaidhean trom, dh'fhàs a h-uile dad na b 'fheàrr. Ach chan eil crìoch air foirfeachd!

Bha an tagradh againn mu thràth air a roinn ann an timcheall air 150 modal gradle. Mar as trice bidh tasgadan gradle iomallach ag obair gu math sa chùis seo, agus mar sin chuir sinn romhainn feuchainn air.

Is e seirbheis a th’ ann an Gradle remote cache a bhios comasach air artifacts a thogail airson gnìomhan fa-leth ann am modalan fa leth. Bidh Gradle, an àite a bhith a’ cur ri chèile a’ chòd, a’ cleachdadh HTTP gus an tasgadan iomallach a bhualadh agus faighneachd a bheil cuideigin air a’ ghnìomh seo a choileanadh mu thràth. Ma tha, dìreach luchdaich sìos an toradh.

Tha ruith tasgadan iomallach Gradle furasta oir tha Gradle a’ toirt seachad ìomhaigh Docker. Chaidh againn air seo a dhèanamh ann an trì uairean a thìde.

Cha robh agad ach Docker a chuir air bhog agus aon loidhne a sgrìobhadh sa phròiseact. Ach ged a ghabhas a chuir air bhog gu sgiobalta, bheir e tòrr ùine airson a h-uile càil obrachadh gu math.

Gu h-ìosal tha an graf teachdaireachdan tasgadan.

Evolution CI anns an sgioba leasachaidh gluasadach

Aig an fhìor thoiseach, bha an àireamh sa cheud de chall tasgadan timcheall air 65. Às deidh trì seachdainean, chaidh againn air an luach seo àrdachadh gu 20%. Thionndaidh e a-mach gu bheil eisimeileachd neo-ghluasadach neònach aig na gnìomhan a bhios an aplacaid Android a ’tional, air sgàth sin chaill Gradle an tasgadan.

Le bhith a’ ceangal an tasgadan, luathaich sinn an togail gu mòr. Ach a bharrachd air co-chruinneachadh, tha deuchainnean ionnstramaid ann cuideachd, agus bheir iad ùine mhòr. Is dòcha nach fheum a h-uile deuchainn a bhith air a ruith airson gach iarrtas tarraing. Gus faighinn a-mach, bidh sinn a 'cleachdadh mion-sgrùdadh buaidh.

Mion-sgrùdadh buaidh

Air iarrtas tarraing, cruinnichidh sinn git diff agus lorg sinn na modalan Gradle atharraichte.

Evolution CI anns an sgioba leasachaidh gluasadach

Tha e ciallach dìreach deuchainnean ionnstramaid a ruith a nì sgrùdadh air na modalan atharraichte agus a h-uile modal a tha an urra riutha. Chan eil feum ann a bhith a 'ruith dheuchainnean airson modalan faisg air làimh: chan eil an còd an sin air atharrachadh agus chan urrainn dha dad a bhriseadh.

Chan eil deuchainnean ionnstramaid cho sìmplidh, oir feumaidh iad a bhith suidhichte anns a’ mhodal Iarrtas àrd-ìre. Chleachd sinn heuristics le mion-sgrùdadh bytecode gus tuigsinn dè am modal leis am buin gach deuchainn.

Thug ùrachadh air obrachadh nan deuchainnean ionnstramaid gus nach dèan iad deuchainn ach air na modalan a bha an sàs ann timcheall air ochd seachdainean.

Tha ceumannan gus sgrùdaidhean a luathachadh air obrachadh gu soirbheachail. Bho 45 mionaidean chaidh sinn suas gu timcheall air 15. Tha e àbhaisteach feitheamh cairteal uair a thìde airson togail.

Ach a-nis tha luchd-leasachaidh air tòiseachadh a’ gearan nach eil iad a’ tuigsinn dè na togalaichean a thathas a’ cur air bhog, càite am faic iad an log, carson a tha an togail dearg, dè an deuchainn a dh’ fhàillig, msaa.

Evolution CI anns an sgioba leasachaidh gluasadach

Bidh duilgheadasan le fios air ais a’ slaodadh leasachadh, agus mar sin dh’ fheuch sinn ri fiosrachadh cho soilleir agus cho mionaideach a thoirt seachad mu gach PR agus togail sa ghabhas. Thòisich sinn le beachdan ann am Bitbucket don PR, a’ nochdadh dè an togail a bha air fàiligeadh agus carson, agus sgrìobh sinn teachdaireachdan cuimsichte ann an Slack. Aig a’ cheann thall, chruthaich sinn deas-bhòrd PR airson na duilleige le liosta de na togalaichean a tha a’ ruith an-dràsta agus an inbhe aca: ciudha, ruith, tuisleadh no crìochnachadh. Faodaidh tu briogadh air an togalach agus faighinn chun log aige.

Evolution CI anns an sgioba leasachaidh gluasadach

Chaidh sia seachdainean a chosg air fios air ais mionaideach.

Planaichean

Gluaisidh sinn air adhart gu eachdraidh o chionn ghoirid. Às deidh dhuinn a’ chùis fios-air-ais fhuasgladh, ràinig sinn ìre ùr - chuir sinn romhainn an tuathanas emuladair againn fhèin a thogail. Nuair a tha mòran dheuchainnean agus emulators ann, tha iad duilich an riaghladh. Mar thoradh air an sin, ghluais na h-emuladairean againn gu buidheann k8s le riaghladh ghoireasan sùbailte.

A bharrachd air an sin, tha planaichean eile ann.

  • Till dhan duilleag a leanas: Lint (agus mion-sgrùdadh statach eile). Tha sinn mu thràth ag obair air an taobh seo.
  • Ruith a h-uile càil air neach-bacadh PR deuchainnean deireadh-gu-deireadh air a h-uile dreach SDK.

Mar sin, tha sinn air eachdraidh leasachadh Integration Leantainneach ann an Avito a lorg. A-nis tha mi airson beagan comhairle a thoirt seachad bho shealladh eòlach.

Советы

Nam b’ urrainn dhomh dìreach aon phìos comhairle a thoirt seachad bhiodh e mar seo:

Feuch gum bi thu faiceallach le sgriobtaichean shligean!

Tha Bash na inneal gu math sùbailte agus cumhachdach, tha e gu math goireasach agus luath airson sgriobtaichean a sgrìobhadh. Ach faodaidh tu tuiteam ann an ribe leis, agus, gu mì-fhortanach, thuit sinn ann.

Thòisich e uile le sgriobtaichean sìmplidh a ruith air na h-innealan togail againn:

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

Ach, mar a tha fios agad, bidh a h-uile càil a’ leasachadh agus a’ fàs nas iom-fhillte thar ùine - ruitheamaid aon sgriobt bho fhear eile, leig dhuinn a dhol seachad air cuid de pharamadairean an sin - aig a’ cheann thall bha againn ri gnìomh a sgrìobhadh a cho-dhùineas dè an ìre de neadachadh bash a tha sinn a-nis ann an òrdugh gus na luachan riatanach a chuir a-steach, gus tòiseachadh air a h-uile càil.

Evolution CI anns an sgioba leasachaidh gluasadach

Faodaidh tu smaoineachadh air na cosgaisean saothair airson leasachadh a leithid de sgriobtaichean. Tha mi a 'toirt comhairle dhut gun a bhith a' tuiteam a-steach don ribe seo.

Dè as urrainn a chur na àite?

  • Cànan sgrìobhaidh sam bith. Sgrìobh gu Sgriobt Python no Kotlin nas goireasaiche oir is e prògramadh a th’ ann, chan e sgriobtaichean.
  • No thoir cunntas air a h-uile loidsig togail san fhoirm Gnìomhan gradle gnàthaichte airson do phròiseact.

Cho-dhùin sinn an dàrna roghainn a thaghadh, agus a-nis tha sinn gu riaghailteach a’ cuir às do gach sgriobt bash agus a’ sgrìobhadh tòrr ghnìomhan gradle àbhaisteach.

Gliocas #2: Stòr bun-structair ann an còd.

Tha e goireasach nuair a tha an suidheachadh Integration Leantainneach air a stòradh chan ann ann an eadar-aghaidh UI Jenkins no TeamCity, msaa, ach ann an cruth faidhlichean teacsa gu dìreach ann an stòr a ’phròiseict. Bheir seo comas tionndadh. Cha bhith e doirbh an còd a thoirt air ais no a thogail air meur eile.

Faodar sgriobtaichean a stòradh ann am pròiseact. Dè a nì thu leis an àrainneachd?

Gliocas #3: Faodaidh Docker cuideachadh leis an àrainneachd.

Cuidichidh e gu cinnteach luchd-leasachaidh Android; chan eil fear aig iOS fhathast, gu mì-fhortanach.

Seo eisimpleir de fhaidhle docker sìmplidh anns a bheil jdk agus 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

Às deidh dhut am faidhle Docker seo a sgrìobhadh (Innsidh mi dìomhaireachd dhut, cha leig thu a leas a sgrìobhadh, ach dìreach tarraing e deiseil bho GitHub) agus an ìomhaigh a chruinneachadh, gheibh thu inneal brìgheil air an urrainn dhut an tagradh a thogail agus ruith deuchainnean Junit.

Is e an dà phrìomh adhbhar carson a tha seo ciallach scalability agus ath-aithris. Le bhith a’ cleachdadh docker, faodaidh tu dusan àidseant togail a thogail gu sgiobalta aig am bi an aon àrainneachd ris an fhear roimhe. Tha seo a’ dèanamh beatha innleadairean CI tòrr nas fhasa. Tha e gu math furasta an android-sdk a phutadh gu docker, ach le emuladairean tha e beagan nas duilghe: feumaidh tu a bhith ag obair beagan nas duilghe (no luchdaich sìos am fear crìochnaichte bho GitHub a-rithist).

Tip No. 4: na dì-chuimhnich nach eil sgrùdaidhean air an dèanamh airson sgrùdaidhean, ach airson daoine.

Tha fios air ais luath agus, as cudromaiche, soilleir glè chudromach do luchd-leasachaidh: dè a bhris, dè an deuchainn a dh'fhàillig, càite am faic mi an clàr togail.

Gliocas #5: Bi pragmatach nuair a bhios tu a’ leasachadh Amalachadh Leantainneach.

Tuig gu soilleir dè an seòrsa mhearachdan a tha thu airson casg a chuir air, dè an ìre de ghoireasan, ùine agus ùine coimpiutair a tha thu deònach a chaitheamh. Faodar seicichean a bheir ro fhada, mar eisimpleir, a chuir dheth thar oidhche. Agus bu chòir an fheadhainn aca nach eil a 'glacadh mhearachdan fìor chudromach a thrèigsinn gu tur.

Gliocas #6: Cleachd innealan deiseil.

Tha mòran chompanaidhean ann a-nis a bheir seachad sgòth CI.

Evolution CI anns an sgioba leasachaidh gluasadach

Tha seo na fhuasgladh math airson sgiobaidhean beaga. Chan fheum thu taic a thoirt do rud sam bith, dìreach pàigh beagan airgid, tog an tagradh agad agus eadhon ruith deuchainnean ionnstramaid.

Gliocas #7: Ann an sgioba mòr, tha fuasglaidhean in-thaigh nas prothaidiche.

Ach nas luaithe no nas fhaide air adhart, mar a bhios an sgioba a 'fàs, bidh fuasglaidhean taobh a-staigh a' fàs nas prothaidiche. Tha aon duilgheadas ann leis na co-dhùnaidhean sin. Tha lagh ann a bhith a 'lùghdachadh toradh ann an eaconamas: ann am pròiseact sam bith, tha gach leasachadh às dèidh sin nas duilghe agus feumar barrachd is barrachd tasgaidh.

Tha eaconamas a’ toirt cunntas air ar beatha gu lèir, a’ toirt a-steach Amalachadh Leantainneach. Thog mi clàr de chosgaisean obrach airson gach ìre de leasachadh ar Amalachadh Leantainneach.

Evolution CI anns an sgioba leasachaidh gluasadach

Tha e soilleir gu bheil leasachadh sam bith a’ fàs nas duilghe. A 'coimhead air a' ghraf seo, tuigidh tu gum feumar Amalachadh Leantainneach a leasachadh a rèir fàs meud sgioba. Airson sgioba de dhithis, is e beachd meadhanach a th’ ann a bhith a’ caitheamh 50 latha a’ leasachadh tuathanas emuladair a-staigh. Ach aig an aon àm, airson sgioba mòr, chan e droch bheachd a th ’ann a bhith a’ dèanamh amalachadh leantainneach idir, oir tha duilgheadasan amalachaidh, suidheachadh conaltraidh, msaa. bheir e eadhon barrachd ùine.

Thòisich sinn leis a’ bheachd gu bheil feum air fèin-ghluasad leis gu bheil daoine daor, bidh iad a’ dèanamh mhearachdan agus leisg. Ach bidh daoine cuideachd a’ dèanamh fèin-ghluasad. Mar sin, tha na h-aon dhuilgheadasan a’ buntainn ri fèin-ghluasad.

  • Tha fèin-ghluasad daor. Cuimhnich an clàr-obrach.
  • Nuair a thig e gu fèin-ghluasad, bidh daoine a’ dèanamh mhearachdan.
  • Aig amannan tha e gu math leisg fèin-ghluasad, oir bidh a h-uile dad ag obair mar sin. Carson a leasaicheas tu dad sam bith eile, carson a tha an aonachadh leantainneach seo?

Ach tha staitistig agam: tha mearachdan air an glacadh ann an 20% de cho-chruinneachaidhean. Agus chan eil seo air sgàth gu bheil an luchd-leasachaidh againn a’ sgrìobhadh còd gu dona. Tha seo air sgàth gu bheil luchd-leasachaidh misneachail ma nì iad beagan mearachd, nach tig e gu crìch ann an leasachadh, gun tèid a ghlacadh le sgrùdaidhean fèin-ghluasadach. Mar sin, faodaidh luchd-leasachaidh barrachd ùine a chaitheamh a’ sgrìobhadh còd agus rudan inntinneach, seach a bhith a’ ruith agus a’ dèanamh deuchainn air rudeigin gu h-ionadail.

Cleachd Integration Leantainneach. Ach ann am measarra.

Co-dhiù, Nikolai Nesterov chan ann a mhàin a 'toirt deagh aithrisean, ach tha e cuideachd na bhall de chomataidh a' phrògram AppsConf agus a’ cuideachadh dhaoine eile gus òraidean brìoghmhor ullachadh dhut. Faodar iomlanachd agus feumail an ath phrògram co-labhairt a mheasadh le cuspairean ann an clàr-ama. Agus airson mion-fhiosrachadh, thig gu Infospace air Giblean 22-23.

Source: www.habr.com

Cuir beachd ann