Te whanaketanga o CI i roto i te roopu whanaketanga pūkoro

I tenei ra, ka whakawhanakehia te nuinga o nga hua rorohiko i roto i nga roopu. Ko nga tikanga mo te whakawhanaketanga o te roopu angitu ka taea te whakaatu i te ahua o te hoahoa ngawari.

Te whanaketanga o CI i roto i te roopu whanaketanga pūkoro

Ina tuhia e koe to waehere, me tino mohio koe:

  1. Kei te mahi.
  2. Kaore e pakaru tetahi mea, tae atu ki te waehere i tuhia e o hoa mahi.

Mena ka tutuki nga tikanga e rua, katahi koe kei te huarahi ki te angitu. Kia ngawari te tirotiro i enei tikanga me te kore e kotiti ke i te huarahi whai hua, i puta mai ko te Continuous Integration.

Ko te CI he rerengamahi ka whakauru koe i to waehere ki roto i te waehere hua katoa i nga wa katoa ka taea. A kaore koe e whakauru noa, engari me tirotiro tonu kei te mahi nga mea katoa. I te mea he maha nga wa e hiahia ana koe ki te tirotiro, he pai ki te whakaaro mo te automation. Ka taea e koe te tirotiro i nga mea katoa, engari kaua e tika, koinei te take.

  • E te iwi aroha. He nui ake te utu o te haora mahi a tetahi kaihōtaka i te haora mahi a tetahi kaitoro.
  • Ka hapa te tangata. Na reira, ka ara ake pea nga ahuatanga i te wa i whakahaerea nga whakamatautau ki te peka he, i whakahiatohia ranei te mahi he mo nga kaiwhakamatautau.
  • He mangere te tangata. I etahi wa, ka mutu taku mahi, ka puta te whakaaro: “He aha te mea hei tirotiro? E rua nga rarangi i tuhia e au - ka pai nga mea katoa! Ki taku whakaaro he penei ano nga whakaaro o etahi o koutou i etahi wa. Engari me tirotiro tonu koe.

He pehea te whakatinanatanga me te whakawhanaketanga o te Whakauru Tonu i roto i te roopu whanaketanga waea a Avito, me pehea te haere mai i te 0 ki te 450 te hanga i ia ra, me te hanga mihini ka huihui 200 haora ia ra, e ai ta Nikolai Nesterov (nnesterov) he kaiuru ki nga huringa whanaketanga katoa o te tono CI/CD Android.

Ko te korero i runga i te tauira o te tono Android, engari ko te nuinga o nga huarahi e pa ana ki a iOS hoki.


I tetahi wa, kotahi te tangata i mahi i roto i te roopu Avito Android. Ma te whakamaramatanga, kaore i hiahiatia e ia tetahi mea mai i te Whakakotahitanga Tonu: kaore he tangata hei whakauru.

Engari ka tipu te tono, ka nui ake nga mahi hou ka puta, ka tipu te roopu i runga ano. I tetahi wa, kua tae ki te wa ki te whakarite okawa i tetahi tukanga whakauru waehere. I whakatauhia kia whakamahia te rere a Git.

Te whanaketanga o CI i roto i te roopu whanaketanga pūkoro

Ko te kaupapa o te rere a Git e tino mohiotia ana: kotahi te peka whakawhanake noa o tetahi kaupapa, a, mo ia ahuatanga hou, ka tapahia e nga kaiwhakawhanake he peka motuhake, ka whakaae ki a ia, ka pana, a ka hiahia ratou ki te hanumi i a raatau waehere ki te peka whakawhanake, whakatuwheratia he tono toia. Hei tohatoha matauranga me te matapaki i nga huarahi, i whakauruhia e matou te arotake waehere, ara, me tirotiro nga hoa mahi me te whakau i te waehere a tetahi.

Ngā haki

He hauhautanga te kite i te waehere me o kanohi, engari kaore e ranea. Na reira, kei te whakauruhia nga arowhai aunoa.

  • Tuatahi, ka tirohia e matou Huihuinga ARK.
  • He rota Nga whakamatautau Junit.
  • Ka whakaarohia e matou te kapi waehere, i te mea kei te whakahaere tatou i nga whakamatautau.

Kia mohio ai koe me pehea te whakahaere i enei arowhai, me titiro ki te tukanga whanaketanga i Avito.

Ka taea te tohu i te ahua penei:

  • Ka tuhia e te kaiwhakawhanake he waehere ki tana pona. Ka taea e koe te whakahaere i nga arowhai whakaurunga ki konei - me te matau whirinaki, me whakahaere noa i nga haki kei muri.
  • I muri i te pana o te kaiwhakawhanake i te waehere, ka whakatuwherahia e ia he tono toia. Kia uru atu ai tana waehere ki roto i te peka whakawhanake, me haere ma te arotake waehere me te kohi i te maha o nga whakapumautanga. Ka taea e koe te arowhai me te hanga ki konei: kia angitu nga hanga katoa, kaore e taea te hanumi te tono toia.
  • I muri i te whakakotahitanga o te tono kume me te whakauru i te waehere ki te whakawhanake, ka taea e koe te kowhiri i te waa watea: hei tauira, i te po, i te wa e waatea ana nga kaitoro katoa, me te whakahaere i te maha o nga arowhai e pai ana koe.

Karekau he tangata i pai ki te whakahaere matawai i runga i to raatau pona. Ka oti i te kaiwhakawhanake tetahi ahuatanga, ka hiahia ia ki te pana tere me te whakatuwhera i tetahi tono toia. Mena i tenei wa ka whakarewahia etahi arowhai roa, ehara tenei i te mea tino pai, engari ka puhoi ano te whakawhanaketanga: i te wa e tirotirohia ana e te pona tetahi mea, kaore e taea te mahi noa.

I tino pai ki a matou te whakahaere arowhai i te po, na te mea he nui te wa me nga kaitoro, ka taea e koe te haereere. Engari, karekau, ka uru te tohu tohu ki te whakawhanake, ka iti ake te hiahia o te kaiwhakawhanake ki te whakatika i nga hapa i kitea e CI. I etahi wa ka whakaaro ahau i taku tirohanga ki nga hapa katoa i kitea i te ripoata o te ata ka whakatikahia e au a muri ake nei, na te mea he mahi hou kei Jira e hiahia ana ahau ki te timata ki te mahi.

Mena ka aukatihia e nga arowhai tetahi tono kume, he nui te hihiri, na te mea kia huri ra ano nga hanga ki te kaakaariki, karekau te waehere e uru ki roto, ko te tikanga kaore e oti te mahi.

Ko te mutunga mai, i whiriwhiria e matou te rautaki e whai ake nei: ka whakahaerehia e matou te nuinga o nga huinga arowhai i te po, ka whakarewahia nga tino arowhai, me te mea nui, ko nga mea tere i runga i te tono kume. Engari kaore matou e mutu i reira-i te whakarara, ka arotauhia e matou te tere o nga arowhai kia taea ai te whakawhiti mai i te aratau po ki te toia nga arowhai tono.

I taua wa, i tino tere katoa o maatau hanga, no reira i whakauruhia noa e matou te hanga ARK, nga whakamatautau Junit me nga tatauranga kapi tohu hei aukati mo te tono kume. Ka whakahurihia e matou, ka whakaarohia, ka whakarerea e matou te kapi waehere na te mea i whakaaro matou kaore e hiahiatia e matou.

E rua nga ra i roa ki te whakarite katoa i te CI taketake (i muri nei ko te whakatau tata he tata, e hiahiatia ana mo te tauine).

I muri i tera, ka timata taatau ki te whakaaro ake - kei te tika tonu taatau? Kei te whakahaere tika tatou i nga tono kume?

I timata matou ki te hanga i runga i te tuunga whakamutunga o te peka i whakatuwherahia ai te tono toia. Engari ko nga whakamatautau o tenei mahi ka taea anake te whakaatu he mahi te waehere i tuhia e te kaiwhakawhanake. Engari kaore ratou e whakaatu ana kaore i pakaru tetahi mea. Inaa, me tirotiro koe i te ahua o te peka whakawhanake i muri i te hanumi o tetahi ahuatanga ki roto.

Te whanaketanga o CI i roto i te roopu whanaketanga pūkoro

Ki te mahi i tenei, i tuhia e matou he tuhinga bash ngawari premerge.sh:

#!/usr/bin/env bash

set -e

git fetch origin develop

git merge origin/develop

I konei ko nga huringa hou katoa mai i te whakawhanake ka toia ake ka hanumi ki te peka o naianei. I taapirihia e matou te tuhinga premerge.sh hei mahi tuatahi i roto i nga hangahanga katoa ka tiimata te tirotiro i ta matou e hiahia ana, ara whakauru.

E toru nga ra ki te kimi i te raruraru, ki te kimi otinga, ki te tuhi i tenei tuhinga.

I whakawhanakehia te tono, kua maha ake nga mahi i puta, i tipu te roopu, i etahi wa ka timata a premerge.sh ki te tuku i a matou ki raro. He rereke nga huringa i pakaru i te hanga.

He tauira mo te ahuatanga o tenei:

Te whanaketanga o CI i roto i te roopu whanaketanga pūkoro

E rua nga kaiwhakawhanake i te wa kotahi ka timata ki te mahi i runga i nga ahuatanga A me B. Ka kitea e te kaiwhakawhanake o te ahuatanga A tetahi ahuatanga kaore i whakamahia i roto i te kaupapa answer() a, ka rite ki te tamaiti pai, ka tangohia e ia. I te wa ano, ko te kaiwhakawhanake o te ahuatanga B ka taapiri he waea hou ki tenei mahi i roto i tana peka.

Ka whakaoti nga kaihanga i a raatau mahi me te whakatuwhera i te tono toia i te wa ano. Ka whakarewahia nga hanga, ka tirohia e te premerge.sh nga tono kume e rua mo te ahuatanga whakawhanake hou - he kaakaariki nga haki katoa. Whai muri i tera, ka hanumi te tono kume o te ahua A, ka hanumi te tono kume o te ahua B... Boom! Whakawhanakehia nga wehenga na te mea kei roto i te waehere whakawhanake he waea ki tetahi mahi kore.

Te whanaketanga o CI i roto i te roopu whanaketanga pūkoro

Ki te kore e whanake, ko aituā rohe. Kaore e taea e te roopu katoa te kohi i tetahi mea ka tukuna mo te whakamatautau.

Ko te mea i puta i te nuinga o nga wa ka mahi au i nga mahi hanganga: tātaritanga, whatunga, papaa raraunga. Arā, naku i tuhi aua mahi me nga karaehe e whakamahia ana e etahi atu kaihanga. Na tenei, i kitea e ahau i roto i nga ahuatanga rite tonu. I whakairihia e au tenei pikitia mo tetahi wa.

Te whanaketanga o CI i roto i te roopu whanaketanga pūkoro

I te mea kaore tenei i pai ki a maatau, i timata matou ki te tirotiro i nga huarahi hei aukati i tenei.

Me pehea e kore ai e pakaru te whakawhanake

Kōwhiringa tuatahi: hanga ano nga tono kume katoa ina whakahōu te whakawhanake. Mena, i roto i ta maatau tauira, ko te tono toia me te ahuatanga A ko te tuatahi ka whakauruhia ki roto i te whakawhanaketanga, ka hangaia ano te tono kume o te ahuatanga B, a, na reira, ka taka nga arowhai na te hapa whakahiato.

Kia mohio ai koe ki te roa o tenei, whakaarohia he tauira me nga PR e rua. Ka whakatuwherahia e matou nga PR e rua: e rua nga hanga, e rua nga waahanga arowhai. I muri i te whakakotahitanga o te PR tuatahi ki te whakawhanake, me hanga ano te tuarua. Hui katoa, e rua nga PR e toru nga waahanga arowhai: 2 + 1 = 3.

Ko te tikanga, he pai. Engari i titiro matou ki nga tatauranga, a, ko te ahuatanga o ta matou roopu he 10 nga PR tuwhera, katahi ko te maha o nga haki ko te tapeke o te ahunga whakamua: 10 + 9 +... + 1 = 55. Ara, ki te whakaae 10 PRs, me hanga ano e koe kia 55 nga wa. A ko tenei kei roto i te ahuatanga pai, ka paahi nga haki katoa i te wa tuatahi, karekau he tangata e whakatuwhera i te tono toia atu i te wa e whakahaerea ana enei tatini.

Whakaarohia ko koe ano he kaiwhakawhanake me noho tuatahi ki te paato i te paatene "hanumi", na te mea ka mahia e tetahi hoa tata, katahi koe ka tatari kia haere ano nga hangahanga katoa... Kao, kare e mahi. , ka tino whakaroa te whanaketanga.

Te ara tuarua ka taea: kohikohi tono toia i muri i te arotake waehere. Arā, ka whakatuwherahia e koe he tono kume, kohia te maha o nga whakaaetanga mai i nga hoa mahi, whakatika i nga mea e hiahiatia ana, katahi ka whakarewahia nga hanga. Ki te angitu, ka hanumi te tono kume ki te whakawhanake. I tenei keehi, karekau he whakaara ano, engari ka tino puhoi nga urupare. Hei kaiwhakawhanake, ka whakatuwherahia e au he tono toia, ka hiahia tonu ahau ki te kite mena ka whai hua. Hei tauira, ki te rahua te whakamatautau, me tere te whakatika. I roto i te take o te hanga roa, ka puhoi nga urupare, na reira ko te whanaketanga katoa. Kare hoki tenei i pai ki a matou.

Ko te mutunga, ko te whiringa tuatoru anake i toe - pahikara. Ko o maatau waehere katoa, ko o maatau puna katoa ka rongoa ki roto i te putunga i runga i te tūmau Bitbucket. Na reira, me hanga e matou he mono mo Bitbucket.

Te whanaketanga o CI i roto i te roopu whanaketanga pūkoro

Ka takahia e tenei mono te tikanga whakakotahi tono kume. He paerewa te timatanga: ka tuwhera te PR, ka whakarewahia nga huihuinga katoa, ka oti te arotake waehere. Engari i muri i te otinga o te arotake waehere ka whakatau te kaiwhakawhanake ki te paato i te "hanumi", ka tirohia e te monohiko te ahua o te whakawhanaketanga i whakahaeretia nga arowhai. Mena kua whakahouhia te whakawhanaketanga i muri i te hanga, karekau te mono e whakaae kia hanumihia te tono toia ki te peka matua. Ka timata ano i nga hanganga o tetahi whanaketanga tata.

Te whanaketanga o CI i roto i te roopu whanaketanga pūkoro

I roto i ta maatau tauira me nga huringa taupatupatu, ka rahua enei hanga na te hapa whakahiato. Na, ko te kaiwhakawhanake o te ahuatanga B me whakatika te waehere, ka whakaara ano i nga arowhai, katahi ka tono aunoa te mono i te tono kume.

I mua i te whakatinanatanga o tenei mono, he 2,7 te utu o te arotake mo ia tono kume. Ki te mono he 3,6 whakarewatanga. I pai tenei ki a maatau.

He mea tika kia mahara he raru to tenei mono: kotahi noa te whakaara ano i te hanga. Arā, he matapihi iti tonu e taea ai e nga huringa taupatupatu te whanake. Engari he iti te tupono o tenei, a i mahia e matou tenei tauhokohoko i waenga i te maha o nga tiimata me te tupono ka hinga. I roto i nga tau e rua kotahi anake te puhipuhi, no reira kare pea i maumau.

E rua wiki te roa ki te tuhi i te putanga tuatahi o te mono Bitbucket.

Nga haki hou

I taua wa, ka tipu tonu ta matou roopu. Kua taapirihia nga arowhai hou.

I whakaaro matou: he aha te mahi he mena ka taea te aukati? Na ko te take i whakatinanahia ai tātari waehere pateko. I timata matou me te lint, kei roto i te Android SDK. Engari i taua wa kaore ia i mohio ki te mahi me te waehere Kotlin, a kua 75% o te tono kua tuhia ki Kotlin. Na reira, i whakauruhia nga mea hanga-i roto ki te lint Android Studio arowhai.

Ki te mahi i tenei, he maha nga mahi whakapohehe: tango i te Android Studio, whakaemihia ki Docker ka whakahaere ki runga CI me te aroturuki mariko, kia whakaaro ai kei te rere i runga i te pona pono. Engari i whai hua.

I tenei wa hoki i timata matou ki te tuhi nui nga whakamatautau taputapu me te whakatinana whakamatautau whakaahua. Koinei te wa ka hangaia he whakaahua tohutoro mo te tirohanga iti motuhake, a ko te whakamatautau ko te tango whakaahua mai i te tirohanga me te whakataurite ki te paerewa tika pika ma te pika. Mena he rereketanga, ko te tikanga kua he te whakatakotoranga ki tetahi waahi, he he ranei kei roto i nga momo ahua.

Engari ko nga whakamatautau taputapu me nga whakamatautau whakaahua me whakahaere i runga i nga taputapu: i runga i nga emulator, i runga ranei i nga taputapu tuuturu. Ki te whakaaro he maha nga whakamatautau me te whakahaere i nga wa katoa, me hiahia te paamu katoa. Ko te tiimata i to ake ake paamu he tino mahi, no reira i kitea e matou he whiringa kua rite - Firebase Test Lab.

Firebase Test Lab

I whiriwhiria na te mea he hua a Google a Firebase, ko te tikanga me pono me te kore e mate. He whaitake nga utu: $5 ia haora mo te mahi o te taputapu tuuturu, 1 $ ia haora mo te mahi a te emulator.

Tata ki te toru wiki ki te whakauru i te Firebase Test Lab ki roto i to maatau CI.

Engari ka tipu haere tonu te kapa, a ko Firebase, ko te mate, i timata te tuku i a matou ki raro. I taua wa, karekau he SLA. I etahi wa ka tatari matou a Firebase kia waatea noa te maha o nga taputapu mo nga whakamatautau, a kaore i timata ki te mahi tonu, i ta matou i hiahia ai. Ko te tatari i roto i te raina ka pau ki te hawhe haora, he tino roa te waa. I whakahaerehia nga whakamatautau taputapu i runga i ia PR, na te whakaroa i te puhoi o te whanaketanga, katahi ka tae mai te pire o ia marama me te moni a tawhio noa. I te nuinga o te waa, i whakatauhia kia whakarerea a Firebase me te mahi i roto i te whare, i te mea kua nui te tipu o te roopu.

Docker + Python + bash

I mauria e matou a Docker, i whakakiia nga emulators ki roto, i tuhia he kaupapa ngawari ki te Python, i te wa tika ka tiimata te maha o nga emulators i roto i te putanga tika ka aukati i a raatau ina tika. Ae ra, e rua nga tuhinga bash - kei hea tatou karekau?

E rima wiki te roa ki te hanga i a maatau ake taiao whakamatautau.

Ko te mutunga mai, mo ia tono kume he maha nga rarangi arowhai-whakahanumi-aukati:

  • Huihuinga ARK;
  • nga whakamatautau Junit;
  • Lint;
  • Android Studio arowhai;
  • Nga whakamatautau taputapu;
  • Nga whakamatautau whakaahua.

I aukati tenei i te maha o nga pakaru. Ma te hangarau i mahi nga mea katoa, engari i amuamu nga kaihanga he roa rawa te tatari mo nga hua.

Kia pehea te roa o te roa? I tukuna e matou nga raraunga mai i Bitbucket me TeamCity ki te punaha tātari me te mohio ki tera wā tatari toharite 45 meneti. Arā, ko te kaiwhakawhanake, i te whakatuwheratanga o te tono kume, ka tatari mo te 45 meneti toharite mo nga hua hanga. Ki taku whakaaro, he nui tenei, kaore e taea e koe te mahi pera.

Ko te tikanga, i whakatau matou ki te whakatere i o maatau hanga katoa.

Kia tere tatou

I te mea ka tu tonu nga whare ki te rarangi, ko te mea tuatahi ka mahia e matou i hokona etahi atu taputapu — ko te whanaketanga whanui te mea ngawari. Ka mutu te tutiraa o nga whare, engari he iti noa iho te wa tatari, na te mea he roa rawa te waa tatari.

Te tango i nga arowhai ka roa rawa

Ka mau pea i ta maatau Whakauru Tonu enei momo hapa me nga raru.

  • E kore e haere. Ka taea e CI te hopu i te hapa whakahiato ina kore tetahi mea e hanga na te paheketanga o nga huringa. Ka rite ki taku korero, katahi ka kore e taea e tetahi te kohi i tetahi mea, ka mutu te whakawhanaketanga, ka mataku katoa.
  • Bug i roto i te whanonga. Hei tauira, i te wa e hangaia ana te tono, engari ka pakaru ina pehia e koe te paatene, karekau ranei te patene i pehia rawatia. He kino tenei na te mea ka tae atu taua pepeke ki te kaiwhakamahi.
  • Bug i te tahora. Hei tauira, ka paohia te paatene, engari kua nekehia te 10 pika ki te taha maui.
  • Te piki ake o te nama hangarau.

I muri i te titiro ki tenei rarangi, ka mohio matou ko nga waahanga tuatahi e rua anake te mea nui. E hiahia ana matou ki te hopu i nga raru penei i te tuatahi. Ka kitea nga pepeke i roto i te tahora i te waahanga arotake-hoahoa, a ka ngawari te whakatika i tera wa. Ko te mahi mo nga nama hangarau me whai tikanga motuhake me te whakamahere, no reira i whakatau matou kia kaua e whakamatautau i runga i te tono toia.

I runga i tenei whakarōpūtanga, i ruia e matou te rarangi katoa o nga arowhai. I whiti atu a Lint me te hiki i tana whakarewanga mo te po: kia puta he ripoata mo te maha o nga raruraru i roto i te kaupapa. I whakaae matou ki te mahi motuhake me te nama hangarau, a I tino whakarerea nga arowhai a Android Studio. Ko te Android Studio i Docker mo te whakahaere tirotiro he ahua pai, engari he nui te raru o te tautoko. Ko nga whakahoutanga ki nga putanga Android Studio te tikanga he pakanga ki nga pepeke kore e mohio. He uaua hoki ki te tautoko i nga whakamatautau whakaahua, na te mea kaore i tino pumau te whare pukapuka me nga hua teka. Kua tangohia nga whakamatautau whakaahua mai i te rarangi arowhai.

Ko te mutunga, i mahue mai ki a matou:

  • Huihuinga ARK;
  • nga whakamatautau Junit;
  • Nga whakamatautau taputapu.

Gradle keteroki mamao

Kaore he arowhai taumaha, kua pai ake nga mea katoa. Engari kaore he rohe ki te tino pai!

Kua wehewehea ta maatau tono ki te 150 nga waahanga karaehe. He pai te mahi keteroki mamao a Gradle i tenei keehi, no reira ka whakatau matou ki te whakamatau.

Ko te keteroki mamao a Gradle he ratonga ka taea te keteroki te hanga taonga mo nga mahi takitahi i roto i nga waahanga takitahi. Ko Gradle, hei utu mo te whakahiato i te waehere, ka whakamahi i te HTTP hei patuki i te keteroki mamao me te patai mena kua mahia e tetahi tenei mahi. Mena ae, ka tango noa i te hua.

He ngawari te whakahaere i te keteroki mamao a Gradle na te mea ka tukuna e Gradle he ahua Docker. I taea e matou te mahi i tenei i roto i nga haora e toru.

Ko nga mea katoa i mahia e koe ko te whakarewa i a Docker me te tuhi i tetahi raina i roto i te kaupapa. Engari ahakoa ka tere te whakarewahia, ka roa te wa e mahi pai ai nga mea katoa.

Kei raro ko te kauwhata ngaro keteroki.

Te whanaketanga o CI i roto i te roopu whanaketanga pūkoro

I te timatanga, ko te paheketanga o nga hapa keteroki e tata ana ki te 65. I muri i nga wiki e toru, ka taea e matou te whakanui ake i tenei uara ki te 20%. I puta mai ko nga mahi e kohia ana e te tono Android he rereke rereke rereke, na te mea i ngaro a Gradle i te keteroki.

Ma te hono i te keteroki, i tere tere te hanga. Engari hei taapiri mo te huihuinga, kei reira ano nga whakamatautau taputapu, a he roa te waa. Kaore pea nga whakamatautau katoa me whakahaere mo ia tono kume. Ki te mohio, ka whakamahia e matou he tātaritanga paanga.

Te tātari pānga

I runga i te tono toia, ka kohia e matou te git diff ka kitea nga waahanga Gradle kua whakarereketia.

Te whanaketanga o CI i roto i te roopu whanaketanga pūkoro

He mea tika ki te whakahaere i nga whakamatautau taputapu taputapu hei tirotiro i nga waahanga kua whakarereke me nga waahanga katoa e whakawhirinaki ana ki a raatau. Kaore he take ki te whakahaere i nga whakamatautau mo nga waahanga tata: ko te waehere kaore i rereke, kaore he mea e pakaru.

Ko nga whakamatautau taputapu ehara i te mea ngawari, na te mea me noho ki te waahanga tono taumata-runga. I whakamahia e matou te heuristics me te tātari bytecode kia mohio ai ko wai te waahanga o ia whakamatautau.

Ko te whakahou ake i nga mahi o nga whakamatautau taputapu kia whakamatau noa i nga waahanga e uru ana ki te waru wiki.

Kua whai hua nga mahi hei tere ake i nga tirohanga. Mai i te 45 meneti ka piki matou ki te 15. He mea noa te tatari mo te hauwha haora mo te hanga.

Engari inaianei kua timata nga kaiwhakawhanake ki te amuamu kaore ratou i te mohio ko wai nga whare kei te whakarewahia, kei hea te kite i te poro, he aha te mea he whero te hanga, he aha te whakamatautau i rahua, aha atu.

Te whanaketanga o CI i roto i te roopu whanaketanga pūkoro

Ko nga raruraru me nga urupare ka puhoi te whakawhanaketanga, no reira ka ngana matou ki te whakarato i nga korero marama me nga korero mo ia PR me te hanga ka taea. I timata matou me nga korero i roto i te Bitbucket ki te PR, e tohu ana ko wai te hanga i rahua me te aha, me te tuhi i nga karere kua whaaia ki Slack. I te mutunga, i hangaia e matou he papatohu PR mo te wharangi me te rarangi o nga hanga katoa e rere ana i tenei wa me o raatau mana: kua tutira, e oma ana, kua pakaru, kua oti ranei. Ka taea e koe te paato i te hanga ka tae ki tana raarangi.

Te whanaketanga o CI i roto i te roopu whanaketanga pūkoro

E ono nga wiki i pau mo nga korero taipitopito.

Mahere

Me haere tatou ki te hitori o naianei. I te whakatau i te take urupare, ka eke matou ki tetahi taumata hou - i whakatau matou ki te hanga i ta matou ake paamu emulator. Ina he maha nga whakamatautau me nga emulator, he uaua ki te whakahaere. Ko te mutunga mai, i neke katoa o tatou emulators ki te k8s kahui me te whakahaere rauemi ngawari.

I tua atu, tera ano etahi atu mahere.

  • Whakahoki Lint (me etahi atu tātaritanga pateko). Kei te mahi kee matou i tenei huarahi.
  • Whakahaerehia nga mea katoa i runga i te aukati PR nga whakamatautau mutunga-ki-mutunga i runga i nga putanga SDK katoa.

Na, kua tirotirohia e matou te hitori o te whanaketanga o te Whakauru Tonu i Avito. Inaianei kei te hiahia ahau ki te tuku tohutohu mai i te tirohanga mohio.

Tips

Mena ka taea e au te tuku tohutohu kotahi, penei:

Kia tupato ki nga tuhinga anga!

Ko te Bash he taputapu tino ngawari me te kaha, he tino watea me te tere ki te tuhi tuhinga. Engari ka taea e koe te taka ki roto i te mahanga me taua mea, a, ko te kino, ka taka matou ki roto.

I timata katoa me nga tuhinga ngawari i rere i runga i o maatau miihini hanga:

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

Engari, e mohio ana koe, ka whanake nga mea katoa ka uaua ake i roto i te waa - me whakahaere tetahi tuhinga mai i tetahi atu, me tuku etahi tawhā ki reira - i te mutunga me tuhi he mahi hei whakatau he aha te taumata o te kohanga bash kei a tatou inaianei. ki te whakauru i nga korero e tika ana, kia timata katoa.

Te whanaketanga o CI i roto i te roopu whanaketanga pūkoro

Ka taea e koe te whakaaro ki nga utu mo nga mahi mo te whakawhanaketanga o aua tuhinga tuhi. Ka tohutohu ahau kia kaua koe e taka ki tenei mahanga.

He aha te mea ka taea te whakakapi?

  • Tetahi reo tuhi. Tuhia ki Python, Kotlin Script ranei he pai ake na te mea he kaupapa, ehara i nga tuhinga.
  • Whakaahuahia ranei nga arorau hanga katoa i roto i te puka Nga taumahi gradle ritenga mo to kaupapa.

I whakatau matou ki te kowhiri i te waahanga tuarua, a inaianei kei te whakakore nahanaha matou i nga tuhinga bash katoa me te tuhi i te maha o nga mahi gradle ritenga.

Tip #2: Rokiroki hanganga i roto i te waehere.

He watea i te wa e penapenahia ana te tautuhinga Whakauru Tonu i roto i te atanga UI o Jenkins, TeamCity ranei, me etahi atu, engari i te ahua o nga konae tuhinga tika i roto i te putunga kaupapa. Ma tenei ka taea te whakaputa. E kore e uaua ki te huri whakamuri, ki te hanga i te waehere ki runga i tetahi atu peka.

Ka taea te penapena tuhinga ki tetahi kaupapa. Me aha ki te taiao?

Tip #3: Ka taea e Docker te awhina i te taiao.

Ka tino awhina i nga kaiwhakawhanake Android; Kaore ano a iOS i tetahi, engari kaore.

He tauira tenei o te konae docker ngawari kei roto jdk me te 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

Ka oti te tuhi i tenei konae Docker (Ka korero atu ahau ki a koe he mea ngaro, kaore koe e tuhi, engari toia noa mai i a GitHub) ka kohia te ahua, ka whiwhi koe i tetahi miihini mariko ka taea e koe te hanga i te tono. me te whakahaere i nga whakamatautau Junit.

Ko nga take matua e rua e whai tikanga ana ko te whakahiato me te tukurua. Ma te whakamahi i te docker, ka taea e koe te whakaara tere i te tekau ma rua nga kaihoko hanga ka rite tonu te taiao ki to mua. Ma tenei ka ngawari ake te oranga o nga miihini CI. He tino ngawari ki te pana i te android-sdk ki roto i te docker, engari me nga emulators he uaua ake: me whakapau kaha koe (me tango ano i te mea kua oti mai i GitHub).

Aki Nama 4: kaua e wareware ko nga tirotirohanga kaore i mahia mo te whakaaro o nga tirotiro, engari mo nga tangata.

Ko te tere me te mea nui, he mea tino nui te urupare marama mo nga kaiwhakawhanake: he aha te mea i pakaru, he aha te whakamatautau i rahua, kei hea ahau e kite ai i te buildlog.

Tip #5: Kia whai whakaaro i te wa e whakawhanake ana i te Whakauru Tonu.

Kia mohio koe he aha nga momo hapa e hiahia ana koe ki te aukati, te nui o nga rauemi, te wa, me te wa rorohiko e pai ana koe ki te whakapau. Ko nga arowhai ka roa rawa, hei tauira, ka hiki te whakaroa mo te po. A ko te hunga e mau ana i nga hapa ehara i te mea tino nui kia tino whakarerea.

Tip #6: Whakamahia nga taputapu kua rite.

He maha nga kamupene inaianei e whakarato ana i te kapua CI.

Te whanaketanga o CI i roto i te roopu whanaketanga pūkoro

He otinga pai tenei mo nga roopu iti. Kaore koe e hiahia ki te tautoko i tetahi mea, utu noa he moni iti, hanga to tono me te whakahaere i nga whakamatautau taputapu.

Aki #7: I roto i te roopu nui, he pai ake nga otinga i roto i te whare.

Engari ka roa, ka tipu haere te roopu, ka whai hua nga otinga o roto. Kotahi te raru o enei whakatau. He ture mo te whakaheke i nga hua ohaoha: i roto i nga kaupapa katoa, ka kaha ake te uaua o ia whakapainga ka whai ake, me te nui ake o te haumi.

Ko te Ohaoha e whakaatu ana i to tatou oranga katoa, tae atu ki te Whakauru Tonu. I hanga e au he rarangi utu mo nga mahi mo ia wahanga o te whanaketanga o to tatou Whakauru Tonu.

Te whanaketanga o CI i roto i te roopu whanaketanga pūkoro

E marama ana kei te kaha haere nga whakapainga ake. Ma te titiro ki tenei kauwhata, ka mohio koe me whakawhanake te Whakakotahi Tonu i runga i te tipu o te roopu roopu. Mo te roopu e rua nga tangata, he 50 nga ra ki te whakawhanake i tetahi paamu emulator o roto he whakaaro noa. Engari i te wa ano, mo te roopu nui, ko te kore e mahi i te Whakakotahitanga Tonu he whakaaro kino ano hoki, no te mea he raruraru whakauru, he whakatika korero, aha atu. ka nui ake te wa.

I timata matou me te whakaaro e hiahiatia ana te automation na te mea he utu nui te tangata, ka pohehe, ka mangere. Engari ka mahi aunoa nga tangata. Na reira, ko nga raruraru katoa e pa ana ki te automation.

  • He utu nui te mahi aunoa. Kia mahara ki te mahinga mahi.
  • Ina tae mai ki te mahi aunoa, ka he te tangata.
  • I etahi wa he tino mangere ki te mahi aunoa, na te mea ka mahi nga mea katoa. He aha te whakapai ake i tetahi atu mea, he aha enei Whakakotahitanga Tonu katoa?

Engari kei a au nga tatauranga: ka mau nga hapa ki te 20% o nga huihuinga. A ehara tenei i te mea he kino te tuhi waehere a o maatau kaihanga. Ko tenei na te mea e maia ana nga kaiwhakawhanake mehemea ka he ratou, karekau e mutu ki te whakawhanake, ka mau ki nga arowhai aunoa. Na reira, ka taea e nga kaiwhakawhanake te whakapau i te waa ki te tuhi waehere me nga mea whakamere, kaua ki te whakahaere me te whakamatautau i tetahi mea i te rohe.

Whakamahia te Whakauru Tonu. Engari i roto i te whakaōrite.

I te ara, ko Nikolai Nesterov kaore i te tuku korero nui ia ia ano, engari he mema ano hoki mo te komiti o te kaupapa AppsConf me te awhina i etahi atu ki te whakarite korero whai kiko mo koe. Ko te kakato me te whaihua o te kaupapa hui ka whai ake ka taea te aromatawai ma nga kaupapa i roto hōtaka. A mo nga taipitopito, haere mai ki te Infospace a te Paenga-whawha 22-23.

Source: will.com

Tāpiri i te kōrero