Ma baratay amarrada Git laakiin ma waxaad rabtaa inaad qiyaasto sida is-dhexgalka joogtada ah (CI) u shaqeeyo? Mise waxaa laga yaabaa inaad rabto inaad hagaajiso hawl maalmeedkaaga? Koorasku wuxuu ku siin doonaa xirfado wax ku ool ah oo ku saabsan isdhexgalka joogtada ah iyadoo la adeegsanayo kaydka GitHub. Kooraskan looguma talagalin inuu noqdo saaxir aad si fudud u dhex gali karto; taa lidkeeda, waxaad samayn doontaa isla ficilada ay dadku ku sameeyaan shaqada, si la mid ah sida ay u sameeyaan. Waxaan sharxi doonaa aragtida markaad marayso tillaabooyinka ku lug leh.
Maxaan samaynaa?
Markaan horumareyno, waxaan si tartiib tartiib ah u abuuri doonaa liiska tallaabooyinka CI ee caadiga ah, taas oo ah hab fiican oo lagu xasuusto liiskan. Si kale haddii loo dhigo, waxaanu samayn doonaa liiska hawlaha ay horumariyayaashu sameeyaan inta ay samaynayaan is-dhexgalka joogtada ah, samaynta isdhexgalka joogtada ah. Waxaan sidoo kale isticmaali doonaa tiro tijaabo ah oo fudud si aan ugu soo dhaweyno hanaankeena CI midda dhabta ah.
GIF-kani wuxuu si habaysan u muujinayaa ballan-qaadyada ku jira bakhaarkaga markaad koorsada ku sii socoto. Sida aad arki karto, ma jiraan wax adag halkan oo kaliya waxa ugu muhiimsan.
Waxaad mari doontaa xaaladahan caadiga ah ee CI ee soo socda:
Ka shaqee sifo;
Codsiga tijaabooyinka iswada si loo hubiyo tayada;
Fulinta hawsha mudnaanta leh;
Xallinta khilaafaadka marka la isku daro (isku-dhafka isku dhaca);
Cilad ayaa ka dhacda deegaanka wax soo saarka.
Maxaad baran doontaa?
Waxaad awoodi doontaa inaad ka jawaabto su'aalaha soo socda:
Waa maxay isdhexgalka joogtada ah (CI)?
Waa maxay noocyada imtixaanada otomaatiga ah ee lagu isticmaalo CI, iyo si looga jawaabo ficilladee ayay kiciyeen?
Waa maxay codsiyada jiidashada iyo goorma ayaa loo baahan yahay?
Miyaan isku daraa ama dib u saleeyaa isbeddellada?
Dib u celi ama hagaaji nooca xiga?
Markii hore waxaan u tarjumay waxyaabo ay ka mid yihiin "codsiyada jiid" meel kasta, laakiin natiijadu waxay noqotay in aan go'aansado in aan ku celiyo weedho af Ingiriis ah meelaha qaarkood si aan u yareeyo heerka waalida ee qoraalka. Waxaan mararka qaarkood isticmaali doonaa "programmer surzhik" sida falka cajiibka ah ee "go'aamiyey" halkaasoo ay dadku ku isticmaalaan shaqada.
Waa maxay isdhexgalka joogtada ah?
Isdhexgalka Joogtada ah, ama CI, waa dhaqan farsamo kaas oo xubin kasta oo ka mid ah kooxdu ku dhex daro koodkooda kaydka guud ugu yaraan hal mar maalintii, iyo koodka ka soo baxa waa in ugu yaraan la dhiso iyada oo aan khaladaad lahayn.
Waxaa jira khilaafyo ku saabsan ereygan
Qodobka dooda waa inta jeer ee isdhexgalka. Qaar ayaa ku doodaya in isku-darka koodhka hal mar oo keliya maalintii kuma filna in si joogto ah loo dhexgalo. Tusaale ahaan waxaa la soo qaatay koox uu qof walba subaxdii qaata kood cusub oo uu isku daro hal mar fiidkii. Iyadoo tani ay tahay diidmo macquul ah, waxaa guud ahaan la rumeysan yahay in qeexida hal mar maalintii ay tahay mid macquul ah oo macquul ah, gaar ah, oo ku haboon kooxo kala duwan.
Diidmo kale ayaa ah in C++ aysan hadda ahayn luqadda kaliya ee loo isticmaalo horumarinta, oo si fudud loogu baahan yahay isu-ururinta qalad-la'aanta sida habka ansixinta waa daciif. Qaar ka mid ah tijaabooyinka (tusaale, imtixaanada cutubyada lagu fuliyay gudaha) waa inay sidoo kale si guul leh u dhammaadaan. Waqtigan xaadirka ah, bulshadu waxay u socotaa sidii ay tani uga dhigi lahayd shuruud, mustaqbalkana "dhis + unug tijaabo ah" waxay u badan tahay inay noqdaan dhaqan caadi ah, haddii aysan hore u dhicin.
Isdhexgalka Joogtada ah wuu ka duwan yahay gaarsiin joogto ah (Delivery Continuous, CD) taas oo ah in aanay u baahnayn musharax la sii daayo ka dib wareeg kasta oo isdhexgalka.
Liiska tillaabooyinka aan isticmaali doono inta koorsadu socoto
Soo jiid koodkii ugu dambeeyay Laan ka samee master. Bilow shaqada
Samee ballanqaadyo laantaada cusub. Dhis oo tijaabi gudaha. Gudub? U gudub talaabada xigta. Fashilmay? Hagaaji khaladaadka ama imtixaanada oo isku day mar kale.
Ku riix meeshaada fog ama laanta fog.
Abuur codsi jiid Ka wada hadla isbeddellada, ku dar ballan-qaadyo badan marka ay dooddu socoto. Samee imtixaanada ku gudba laanta sifada.
La sameeyay? Haddii aadan bedelin habaynta caadiga ah, kaydinta koorsada waxay u badan tahay in la yiraahdo continuous-integration-team-scenarios-students, waxay ku taal akoonkaaga GitHub URLkuna wuxuu u eg yahay sidan
Waxaan si fudud u wici doonaa cinwaankan <URL ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ>.
Xagalka xagasha sida <ΡΡΡ> macneheedu waxa weeye inaad ku beddesho tibaaxahaas qiimaha ku habboon.
Hubi taas Falalka GitHub lagu daray kaydka koorsadan. Haddii aysan awood u lahayn, fadlan u suurtageli adigoo gujinaya badhanka weyn ee bartamaha bogga, kaas oo aad ku heli karto adigoo gujinaya Actions in interface GitHub.
Ma awoodi doontid inaad dhammaystirto koorsada adoo raacaya tilmaamahayga haddii GitHub Actions aan la shaqayn.
Waxaad had iyo jeer isticmaali kartaa awooda GitHub si aad u soo bandhigto Markdown si aad u aragto heerka hadda ee liiska aanu halkan ku samaynayno
https://github.com/<your GitHub user name>/continuous-integration-team-scenarios-students/blob/master/ci.md
Ku saabsan jawaabaha
Halka sida ugu wanaagsan ee aad koorsadan u dhammayn karto ay tahay in aad adigu samayso, waxa laga yaabaa in ay kugu adkaato.
Haddii aad dareento inaadan fahmin waxaad samayn lahayd oo aadan sii wadi karin, waxaad eegi kartaa dunta solution, kaas oo ku jira kaydka bilawgaaga.
Fadlan ha ku biirin solution Π² master inta koorsadu socoto. Waxaad laantan u isticmaali kartaa inaad ogaato waxaad samaynayso, ama inaad barbar dhigto koodkaaga iyo kan qoraaga, adoo isticmaalaya dhammaan awoodaha uu Git ina siinayo. Haddii aad si buuxda u luntay, waxaad si buuxda u beddeli kartaa laantaada master laan ku taal solution ka dibna dib u deji hagahaaga shaqo tallaabada koorsada aad u baahan tahay.
Kaliya isticmaal kan haddii aad runtii u baahan tahay
Samee koodkaaga
git add .
git commit -m "Backing up my work"
Awaamiirtan
Magacaabid master Π² master-backup;
Magacaabid solution Π² master;
hubinta laan cusub master oo dib u qor waxa ku jira hagaha shaqada;
Ka samee laan "xal" ah "master" (oo ahaan jirtay "xal") haddii aad u baahan tahay laan "xal" mustaqbalka.
Tallaabooyinkan ka dib waxaad isticmaali kartaa git log master si aad u ogaato go'aanka aad u baahan tahay.
Waxaad dib ugu habeyn kartaa hagahaaga shaqo sida tan:
git reset --hard <the SHA you need>
Haddii aad ku faraxsan tahay natiijada, mar waxaad u baahan doontaa inaad daabacdo nuqulkaaga kaydka meel fog. Ha iloobin inaad si cad u sheegtid laanta fog marka aad tan sameyso.
Aynu bilowno ururinta liiskayaga tillaabooyinka CI. Caadi ahaan waxaad bilaabi lahayd tillaabadan adiga oo ka hubinaya nuqulkii u dambeeyay ee koodka kaydka fog, laakiin wali ma hayno kayd maxalli ah, sidaa awgeed waxa aanu ka xidhi karnaa midka fog.
Hawsha: cusboonaysii kaydka deegaanka, ka samee laan master, bilow shaqada
Ka xidho kaydka koorsada <URL ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ>.
Orod npm install tusaha kaydka koorsada; Waxaan u baahanahay si aan u rakibno Jest, kaas oo aan u isticmaalno si aan u wadno imtixaannada.
Laan samee oo u magacow feature. U beddel mawduucan.
Kudar koodka tijaabada ci.test.js Inta u dhaxaysa faallooyinka iga codsanaya inaan tan sameeyo.
it('1. pull latest code', () => {
expect(/.*pull.*/ig.test(fileContents)).toBe(true);
});
it('2. add commits', () => {
expect(/.*commit.*/ig.test(fileContents)).toBe(true);
});
it('3. push to the remote branch with the same name', () => {
expect(/.*push.*/ig.test(fileContents)).toBe(true);
});
it('4. create a pull request and continue working', () => {
expect(/.*pulls+request.*/ig.test(fileContents)).toBe(true);
});
Ku dar qoraal leh 4ta tallaabo ee ugu horreeya faylka ci.md.
1. Pull in the latest code. Create a branch from `master`. Start working.
2. Create commits on your new branch. Build and test locally.
Pass? Go to the next step. Fail? Fix errors or tests and try again.
3. Push to your remote repository or remote branch.
4. Create a pull request. Discuss the changes, add more commits
as discussion continues. Make tests pass on the feature branch.
Caadi ahaan, hadba sida ugu dhaqsaha badan ee qolka imtixaanku u socdo, inta badan ee aad awoodid inaad ku socodsiiso. Qaybinta heerka caadiga ah waxay u ekaan kartaa sidan.
Tijaabooyin unug degdeg ah - inta lagu jiro dhismaha, dhuumaha CI
Tijaabooyin unug gaabis ah, qaybaha degdega ah iyo imtixaanada is dhexgalka - waa go'aan, ee dhuumaha CI
Qayb gaabis ah iyo imtixaanada isdhexgalka - ee dhuumaha CI
Tijaabada amniga, tijaabinta culeyska iyo tijaabooyinka kale ee waqti-qaadka ah ama qaaliga ah - ee dhuumaha CI/CD, laakiin kaliya qaabab/marxalado/qadadka qaar ee dhismaha, tusaale ahaan, marka la diyaarinayo musharraxa sii deynta ama marka gacanta lagu wado.
Hawsha
Waxaan soo jeedinayaa in imtixaanada gacanta lagu sameeyo marka hore adoo isticmaalaya amarka npm test. Intaa ka dib, aan ku darno git hook si aan u wadno imtixaanadayada. Waxa jira hal qabasho: Git hooks looma tixgalinayo qayb ka mid ah kaydka sidaas darteed lagama xidhi karo GitHub oo ay la socdaan inta kale ee agabka koorsada. Si aad u rakibto jillaab waxaad u baahan tahay inaad ordo install_hook.sh ama koobiyeeyo faylka repo/hooks/pre-commit ilaa hagaha deegaanka .git/hooks/.
Markaad sameyso, waxaad arki doontaa in imtixaanada la wado oo ay hubiyaan in erayada muhiimka ah qaarkood ay ku jiraan liiska.
Ku wad imtixaanada gacanta adiga oo ordaya amarka npm test galka kaydka koorsadaada. Xaqiiji in imtixaanadii la dhameeyay.
Hubi in imtixaanada la sameeyay ka hor inta aanad samayn.
Kaydkaagu waa inuu sidan u ekaadaa ka dib marka la raaco tillaabooyinkan.
Kulanka
# Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ pre-commit hook Π²ΡΠΏΠΎΠ»Π½ΠΈΠ² install_hook.sh.
# ΠΠ°ΠΊΠΎΠΌΠΌΠΈΡΡΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ "Add first CI steps" Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΏΡΠΈ ΠΊΠΎΠΌΠΌΠΈΡΠ΅.
git add ci.md ci.test.js
git commit -m "Add first CI steps"
# Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΡΠ΅ΡΡΡ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠΌ.
Ku daabac koodka kaydka fog ama laanta fog
Marka ay dhammeeyaan ka shaqaynta gudaha, horumariyayaashu waxay caadiyan ka dhigaan koodkooda si guud oo la heli karo si aakhirka loogu daro dadweynaha. Iyadoo GitHub, tan waxaa sida caadiga ah lagu gaaraa iyada oo shaqada loo daabaco mid ka mid ah koobiga gaarka ah ee kaydka (fargeetada gaarka ah) ama laan shakhsi ah.
Fargeeto, horumariye wuxuu xidhaa kaydka fog ee la wadaago, isaga oo abuuraya nuqulka fog ee gaarka ah, oo sidoo kale loo yaqaan fargeeto. Kadibna waxay xidhaysaa kaydkan shakhsi ahaaneed si ay ula shaqeyso gudaha. Marka hawshu dhammaato ee la sameeyo, wuxuu ku riixaa fargeeto, halkaas oo ay heli karaan kuwa kale oo lagu dhex dari karo kaydka guud. Habkan waxaa caadi ahaan loo adeegsadaa mashaariicda il furan ee GitHub. Waxa kale oo loo adeegsadaa koorsadayda horumarsan [Shaqada Kooxda iyo CI oo leh Git] (http://devops.redpill.solutions/).
Hab kale ayaa ah in la isticmaalo hal kayd oo fog oo kaliya oo tiriso laanta master kaydka la wadaago "la ilaaliyo". Muuqaalkan, horumariyayaashu waxay ku daabacaan koodkooda laamaha kaydka fog si ay kuwa kale u eegaan koodkan, haddii wax walba ay hagaagsan yihiin, ku biir master kaydka la wadaago.
Ku daabac isbeddellada laanta fog ee magaca laantaada shaqaynaysa
Kulanka
git push --set-upstream origin feature
Abuur codsi jiid
Abuur codsi jiidasho leh cinwaan Talaabooyinka dib u eegista. Ku rakib feature sida "laanta madaxa" iyo master sida "laanta saldhiga".
Hubi inaad rakibtay master uu ku jiro fargeeto bakhaarka Sida "laanta saldhigga", kama jawaabi doono codsiyada isbeddelka ee kaydka agabka koorsada.
Gudaha GitHub lingo, "laanta salka" waa laanta aad ku salaysan tahay shaqadaada, iyo "laanta madaxa" waa laanta ka kooban isbeddellada la soo jeediyay.
Ka wada hadla isbeddellada, ku dar ballan-qaadyo cusub marka dooda ay socoto
Codsiga jiid (PR)
Codsiga jiid (PR) waa hab lagu falanqeeyo oo lagu diiwaan geliyo xeerka, iyo sidoo kale dib u eegista xeerka. Codsiyada jiidista waxaa lagu magacaabaa habka guud ee is-dhexgalka shakhsi ahaaneed ee koodka guud. Caadi ahaan, qofku wuxuu xidhaa kaydka rasmiga ah ee fog ee mashruuca wuxuuna ka shaqeeyaa koodka gudaha. Taas ka dib, wuxuu dhigayaa koodka kaydkiisa fog ee gaarka ah wuxuuna waydiisanayaa kuwa mas'uulka ka ah kaydka rasmiga ah inay soo qaadaanqaado) koodka koodka kaydka maxalliga ah, halkaas oo ay dib u eegaan oo ay suurtogal tahay in ay dhexgalaanisku dar) isaga. Fikradan waxa kale oo loo yaqaan magacyo kale, tusaale ahaan, codsi isku dar.
Dhab ahaantii maahan inaad isticmaasho muujinta codsiga jiidista ee GitHub ama aaladaha la midka ah. Kooxaha horumarinta ayaa laga yaabaa inay isticmaalaan habab kale oo isgaarsiineed, oo ay ku jiraan isgaarsiin fool-ka-fool ah, wicitaanno cod ah, ama iimayl, laakiin weli waxaa jira dhowr sababood oo loo isticmaalo codsiyada jiidashada qaab gole. Waa kuwan qaar ka mid ah:
doodo habaysan oo la xidhiidha isbeddelada koodka gaarka ah;
sidii meel lagu arko jawaab-celinta shaqada-horumaraysa ee ka timaadda tijaabiyeyaasha iyo facooda labadaba;
si rasmi ah dib u eegista code;
si hadhow aad u ogaato sababaha iyo tixgelinta ka danbeysa qodobkan ama qaybtaas.
Caadi ahaan waxaad abuurtaa codsi jiid marka aad u baahan tahay inaad ka hadasho wax ama aad hesho jawaab celin. Tusaale ahaan, haddii aad ka shaqaynayso sifo lagu hirgelin karo in ka badan hal hab, waxaad samayn kartaa codsi jiid ka hor intaadan qorin safka koowaad ee koodka si aad ula wadaagto fikradahaaga oo aad kala hadasho qorshayaashaada hawl-wadeenadaada. Haddii shaqadu fududaato, codsi jiid ayaa la furaa marka wax hore loo qabtay, la go'aamiyay, lagana hadli karo. Xaaladaha qaarkood, waxaa laga yaabaa inaad u baahato inaad furto PR kaliya sababo xakamaynta tayada dartood: si aad u samayso imtixaano toos ah ama bilaw dib u eegis kood. Wax kasta oo aad go'aansatid, ha ilaawin inaad @xasuuso dadka aad oggolaansho ka rabto codsigaaga jiidista.
Caadi ahaan, marka aad abuurayso PR, waxaad samaysaa kuwan soo socda.
Tilmaan waxaad soo jeedinayso inaad bedesho iyo meesha.
Qor sharraxaad sharraxaysa ujeedada isbeddellada. Waxaa laga yaabaa inaad rabto:
ku dar wax kasta oo muhiim ah oo aan ka muuqan koodka, ama shay faa'iido u leh fahamka macnaha guud, sida #dhiqlaha ku habboon oo samee tirooyin;
@ku xus qof kasta oo aad rabto inaad la shaqeyso, ama waxaad ku xusi kartaa @ faallooyinka dambe;
Weydii asxaabtaada inay ku caawiyaan shay ama hubiyaan wax gaar ah.
Markaad furto PR, imtixaanada loo habeeyey inay ku socdaan xaaladahan oo kale ayaa la fulinayaa. Xaaladeena, tani waxay noqon doontaa isla imtixaanadii aan ku wadnay gudaha, laakiin mashruuca dhabta ah waxaa jiri kara imtixaano iyo hubin dheeraad ah.
Fadlan sug inta imtixaanadu dhamaanayaan Waxaad ku arki kartaa heerka imtixaanada xagga hoose ee dooda PR ee GitHub interface. Sii wad marka imtixaanada la dhammeeyo.
Ku dar qoraal ku saabsan randomity liiska tillaabooyinka CI
Liistada koorsadan loo adeegsaday waa mid aan loo meel dayin, waana in aan ku darnaa qoraal arrintan ku saabsan.
Hawsha: u samee codsi jiid faallooyinkan
U beddelo laanta master.
Samee laan magaceedu yahay bugfix.
Ku dar qoraal qoraal ah dhammaadka faylka ci.md.
> **GitHub flow** is sometimes used as a nickname to refer to a flavor of trunk-based development
when code is deployed straight from feature branches. This list is just an interpretation
that I use in my [DevOps courses](http://redpill.solutions).
The official tutorial is [here](https://guides.github.com/introduction/flow/).
Ka shaqaynta codsiga jiidista waxay badanaa keentaa shaqo dheeraad ah. Tani badanaa waa natiijada dib u eegista koodka ama doodaha, laakiin koorsadayada waxaan dooneynaa inaan midaan ku dayno annagoo ku daraya waxyaabo cusub liiska tallaabooyinka CI.
Isdhexgalka joogtada ah wuxuu caadi ahaan ku lug leeyahay qaar ka mid ah daboolida tijaabada. Shuruudaha daboolida imtixaanku way kala duwan yihiin waxaana inta badan laga helaa dukumeenti la yiraahdo wax sida "tilmaamaha wax ku biirinta". Waanu fududayn doonaa waxaanan ku dari doonaa imtixaan kasta oo liiskayaga ku jira.
Marka aad hawsha wado, isku day inaad samayso imtixaanada marka hore. Haddii aad si sax ah u rakibtay pre-commit jillaab hore, imtixaanka cusub ee lagu daray waa la ordi doonaa, wuu dhici doonaa, oo waxba la go'aamin maayo. Ogsoonow in tani ay tahay sida aan ku ognahay in imtixaanadayadu ay dhab ahaantii tijaabinayaan wax. Waxa xiiso leh, haddii aan ku bilowno koodka imtixaannada ka hor, gudbinta imtixaanada waxay la macno tahay in koodku u shaqeeyay sidii la filayay, ama in imtixaanadu aanay ahayn kuwo wax tijaabinaya. Intaa waxaa dheer, haddii aanaan qorin imtixaannada markii hore, waxaa laga yaabaa inaan illowno gebi ahaanba iyaga, maadaama aysan waxba na xusuusin lahayn.
Horumarinta Tijaabada Wadata (TDD)
TDD waxay ku talinaysaa in la qoro imtixaanada ka hor koodka. Socodka shaqada caadiga ah ee la isticmaalayo TDD ayaa u eg sidan.
Ku dar imtixaan
Samee dhammaan imtixaanada oo xaqiiji in imtixaanka cusubi guul daraystay.
Qor koodka.
Samee imtixaanada, hubi in dhammaan imtixaanada ay gudbeen.
Dib u habayn koodkaaga.
Ku celi
Sababtoo ah natiijooyinka imtixaanada ku guuldareysta waxaa badanaa lagu muujiyaa casaan, kuwa ku gudbana waxaa lagu muujiyaa cagaar, wareegga waxaa sidoo kale loo yaqaannaa casaan-cagaaran-dib-u-soo-celinta.
Hawsha
Marka hore, isku day inaad samayso imtixaanada oo u ogolow inay guuldarraystaan, ka dibna ku dar oo geli qoraalka liiska tillaabada CI lafteeda. Waxaad arki doontaa in imtixaanadu gudbayaan ("cagaar").
Ka dib u daabac koodka cusub ee kaydka fog oo daawo imtixaanada ku dhex socda GitHub interface ee hoose ee dooda codsiga jiidista iyo cusboonaysiinta xaalada PR.
U beddelo laanta feature.
Ku dar imtixaanadan ci.test.js ka dib wicitaankii ugu dambeeyay it (...);.
it('5. Merge/rebase commits from master. Make tests pass on the merge result.', () => {
expect(/.*merge.*commits.*testss+pass.*/ig.test(fileContents)).toBe(true);
});
it('6. Deploy from the feature branch to production.', () => {
expect(/.*Deploy.*tos+production.*/ig.test(fileContents)).toBe(true);
});
it('7. If everything is good in production for some period of time, merge changes to master.', () => {
expect(/.*merge.*tos+master.*/ig.test(fileContents)).toBe(true);
});
Isku day inaad samayso imtixaanada. Hadii pre-commit jillaab ayaa la rakibay, isku daygii ballanku wuu guuldarraysan doonaa.
Markaa ku dar qoraalkan ci.md.
5. Merge/rebase commits from master. Make tests pass on the merge result.
6. Deploy from the feature branch with a sneaky bug to production.
7. If everything is good in production for some period of time, merge changes to master.
Waxay ilaalisaa ballan-qaadyadii asalka ahaa ee laamaha iyaga oo wata shaambadahooda asalka ah iyo qorayaasha.
Badbaadiya SHA ballanqaadyada iyo isku xidhka iyaga marka la beddelo wadahadalka codsiga.
Waxay u baahan tahay xalinta isku dhaca hal mar.
Waxay sheekada ka dhigtaa mid aan toos ahayn.
Sheekadu way adkaan kartaa in la akhriyo sababtoo ah tirada badan ee laamood (oo u eg fiilada IDE).
Waxay ka dhigtaa khaladka tooska ah mid aad u adag, tusaale. git bisect faa'iido yar - waxay heli doontaa oo kaliya ballan-qaadka isku-dhafka.
Dib-u-bixinta
Dib-u-celinta waxay ka soo baxaysaa laanta hadda ee korkeeda laanta saldhigga midba midka kale.
Ballanqaadyo cusub oo leh SHA-yo cusub ayaa la soo saaray, taasoo keenaysa ballan-qaadyada GitHub inay ku habboonaadaan codsiyada jiidashada asalka ah, laakiin maaha faallooyinka u dhigma.
Ballanqaadyada waa la isku dari karaa oo wax laga beddeli karaa habka, ama xitaa mid la mid ah.
Isku dhacyo badan ayaa laga yaabaa in loo baahdo in la xaliyo.
Waxay kuu ogolaanaysaa inaad ilaaliso sheeko toosan.
Sheekadu way sahlanaan kartaa in la akhriyo mar haddii aanay aad u dheerayn sabab macquul ah.
Si toos ah u-dejinta iyo cilad-raadinta ayaa waxyar ka fudud: waxay suurtogelisaa git bisect, waxay ka dhigi kartaa dib-u-celinta tooska ah mid cad oo la sii saadaalin karo.
Wuxuu u baahan yahay daabacaadda laan leh ballanqaadyo guuray oo leh calan --force marka loo isticmaalo codsiyada jiidista.
Caadi ahaan, kooxuhu waxay ku heshiiyaan inay had iyo jeer isticmaalaan isla xeelad marka ay u baahan yihiin inay isku daraan isbeddellada. Tani waxay noqon kartaa isku-darka "saafi ah" ama "saaxiib" ah oo dusha sare ah, ama wax u dhexeeya, sida samaynta ballan-qaad sare oo is-dhexgal ah(git rebase -i) gudaha laamaha aan lagu daabicin kaydka dadweynaha, laakiin la isku daro laamaha "dadweynaha".
Halkan waxaan isticmaali doonaa isku-dhafka.
Hawsha
Hubi in koodku ku yaalo laanta deegaanka master laga cusboonaysiiyay meel fog.
U beddelo laanta feature.
Ku billow isku darka laanta master. Isku dhaca isku dhafka ah ee ay sabab u tahay isbeddelada tartanka ku jira ci.md.
Xalli khilaafka si liiskayada tillaabooyinka CI iyo qoraallada ku saabsan labadaba ay ugu jiraan qoraalka.
Daabac ballan-qaadka isku-dhafka laanta fog feature.
Hubi heerka codsiga jiidista ee GitHub UI oo sug ilaa isku darka la xalinayo.
Hawsha: Ansixi codsiga jiidista "Tallaabooyinka dib u eegista"
Fur codsi jiid
Guji "Codsiga jiidida isku dar".
Guji "xaqiiji isku darka".
Guji "Delete branch" maadaama aanan u baahnayn.
Tani waa kaydkaaga hadda
Khaladka alaabta
Waxaa la yiraahdaa "tijaabada waxaa loo isticmaali karaa in lagu muujiyo jiritaanka khaladaadka, laakiin marnaba ma muujinayso maqnaanshahooda." In kasta oo aanu samaynay imtixaano oo aanay na tusin wax khalad ah, haddana waxa soo dhex galay bug qarsoon.
Xaaladdan oo kale, waxaan u baahanahay inaan ilaalino:
waxa la geeyo wax soo saarka;
code ee dunta master oo leh qalad, kaas oo horumariyayaashu ay bilaabi karaan shaqo cusub.
Miyaan dib u rogaa ama u hagaajiyaa nooca xiga?
Dib-u-soo-celinta waa habka lagu geynayo nooc hore oo wanaagsan oo la yaqaan oo soo saarista iyo dib-u-celinta fal-dambiyeedka ay ku jiraan khaladku. "Hore hagaajinta" waa ku darida hagaajinta master iyo in la geeyo nooca cusub sida ugu dhakhsaha badan. Sababtoo ah API-yada iyo nidaamyada kaydka xogta ayaa isbeddelaya marka koodhka loo diro wax-soo-saarka, oo leh keenista joogtada ah iyo caynsanaanta tijaabada wanaagsan, dib-u-soo-celinta ayaa caadi ahaan aad uga dhib badan kana khatarsan sidii loo hagaajin lahaa nooca xiga.
Mar haddii dib-u-rogiddu aysan wax khatar ah ku lahayn kiiskeena, waxaan mari doonnaa waddadan, sababtoo ah way noo ogolaataa
u hagaaji khaladka alaabta sida ugu dhakhsaha badan;
samee code in master isla markiiba ku habboon bilaabista shaqo cusub.
Hawsha
U beddelo laanta master degaan ahaan.
Cusbooneysii kaydka deegaanka ee kaydka fog
Soo celi ballan qaadkii isku darka PR Talaabooyinka dib u eegista Π² master.
Ku daabac isbeddelada kaydka fog
Tani waa taariikhda kaydka oo leh ballan-qaadkii midayntu dib loo celiyay
Hubi in ci.md kuma jiro qoraalka "bug-gaab" ka dib soo celinta ballan-qaadka isku-dhafka.
Hagaaji liiska tillaabooyinka CI oo ku celi sayidkii
Waxaan si buuxda u soo celinay ballan qaadkii laanta. feature. Warka fiicani waa in aynaan hadda wax qalad ah ku lahayn master. Warka xuni waa in liiskayaga qaaliga ah ee talaabooyinka isdhexgalka joogtada ah uu meesha ka baxay. Marka, sida ugu habboon, waxaan u baahanahay inaan ku dabaqno hagaajinta ballan-qaadyada feature oo ku celi master oo ay la socdaan hagaajinta.
Waxaan dhibaatada u wajahi karnaa siyaabo kala duwan:
soo celi ballan qaadkii baabi'iyay isku darka feature Ρ master;
guuri waxay ka go'an tahay kuwii hore feature.
Kooxaha horumarinta ee kala duwan ayaa isticmaala habab kala duwan kiiskan, laakiin waxaan u guuri doonaa ballanqaadyo waxtar leh oo laan gaar ah oo waxaan u abuuri doonaa codsi jiid gooni ah laantan cusub.
Hawsha
Samee dun la yiraahdo feature-fix una wareego.
Ka haajiraan dhammaan ballanqaadyada laanta hore feature dun cusub. In la xalliyo isku dhafka isku dhaca ee dhacay intii lagu jiray socdaalka.
Ku dar tijaabada dib u celinta ci.test.js:
it('does not contain the sneaky bug', () => {
expect( /.*sneakys+bug.*/gi.test(fileContents)).toBe(false);
});
Ku samee imtixaanada gudaha si aad u hubiso in ayan ku dhicin.
Ka saar qoraalka "oo leh bug qarsoon" gudaha ci.md.
Ku dar isbeddelada tijaabada iyo isbeddelada liiska tillaabooyinka tusmada oo samee.