Xaaladaha caadiga ah ee isdhexgalka joogtada ah

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.

Xaaladaha caadiga ah ee isdhexgalka joogtada ah

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?
  • Waa maxay Horumarinta Tijaabada Wadatay (TDD) sideese ula xidhiidhaa CI?
  • 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

  1. Soo jiid koodkii ugu dambeeyay Laan ka samee master. Bilow shaqada
  2. Samee ballanqaadyo laantaada cusub. Dhis oo tijaabi gudaha. Gudub? U gudub talaabada xigta. Fashilmay? Hagaaji khaladaadka ama imtixaanada oo isku day mar kale.
  3. Ku riix meeshaada fog ama laanta fog.
  4. Abuur codsi jiid Ka wada hadla isbeddellada, ku dar ballan-qaadyo badan marka ay dooddu socoto. Samee imtixaanada ku gudba laanta sifada.
  5. Isku-darka/dib-u-dhigista waxay ka go'an tahay sayid. Samee tijaabooyinku inay gudbaan natiijada isku darka.
  6. Ka diyaari laanta sifada ilaa wax soo saarka.
  7. Haddii wax waliba ay ku fiican yihiin wax soo saarka muddo wakhti ah, ku biir isbeddelada si aad u sarreyso.

Xaaladaha caadiga ah ee isdhexgalka joogtada ah

️ Diyaarinta

Hubi inaad haysato software sax ah

Si aad u qaadato koorsadan waxaad u baahan doontaa Node.js ΠΈ Git macmiilka.

Waxaad isticmaali kartaa macmiil kasta oo Git ah, laakiin kaliya waxaan ku siin doonaa amarrada khadka taliska.

Hubi inaad haysato macmiil Git ah oo lagu rakibay kaasoo taageera khadka taliska

Haddii aadan weli haysan macmiil Git ah oo taageera khadka taliska, waxaad heli kartaa tilmaamaha rakibidda halkan.

Diyaari kaydka

Waxaad u baahan doontaa inaad abuurto nuqul gaar ah (fargeeto) kayd template leh code koorsada ku yaal GitHub. Aynu ogolano inaan wacno nuqulkan shakhsi ahaaneed kaydka koorsada.

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

https://github.com/<вашС имя ползоватСля Π½Π° GitHub>/continuous-integration-team-scenarios-students

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.

Xaaladaha caadiga ah ee isdhexgalka joogtada ah

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.

git branch -m master master-backup
git branch -m solution master
git checkout master -f
git branch solution

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.

git push --force origin master

Fadlan ogow inaan isticmaalno git push --force. Lagama yaabo inaad rabto inaad tan sameyso marar badan, laakiin waxaan halkan ku haynaa xaalad gaar ah oo leh hal isticmaale oo kayd ah kaasoo, intaa dheer, fahmaya waxa uu sameynayo.

Bilaabida shaqada

Xaaladaha caadiga ah ee isdhexgalka joogtada ah

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

  1. Ka xidho kaydka koorsada <URL рСпозитория>.
  2. Orod npm install tusaha kaydka koorsada; Waxaan u baahanahay si aan u rakibno Jest, kaas oo aan u isticmaalno si aan u wadno imtixaannada.
  3. Laan samee oo u magacow feature. U beddel mawduucan.
  4. 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);
    });

  5. 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.  

    Kulanka

# ΠšΠ»ΠΎΠ½ΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ курса
git clone <repository URL>
cd <repository name>

# Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ npm install Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ рСпозитория курса; ΠΎΠ½ установит Jest, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ для запуска тСстов.
npm install

# Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π²Π΅Ρ‚ΠΊΡƒ ΠΈ Π½Π°Π·ΠΎΠ²ΠΈΡ‚Π΅ Π΅Π΅ feature. ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ΡΡŒ Π½Π° эту Π² Π²Π΅Ρ‚ΠΊΡƒ.
git checkout -b feature

# ΠžΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ ci.test.js ΠΊΠ°ΠΊ описано Π²Ρ‹ΡˆΠ΅.
# ΠžΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ ci.md ΠΊΠ°ΠΊ описано Π²Ρ‹ΡˆΠ΅

Samee ballanqaadyo laan cusub, dhis oo tijaabi gudaha

Waxaan dejin doonaa imtixaanada si aan u socono ka hor intaanan samayn, ka dibna aan samayno code.

Xaaladaha caadiga ah marka imtixaanadu si toos ah u socdaan

  • Gudaha:
    • Si joogto ah ama looga jawaabayo isbeddelada kood ku habboon;
    • Marka la kaydinayo (luqaadaha la turjumay ama la soo ururiyay ee JIT);
    • Inta lagu jiro kulanka (marka la isku daro);
    • Ballanqaadka;
    • Marka la daabacayo kayd la wadaago.

  • Ku dhis server-ka ama deegaanka dhis:
    • Marka koodhka lagu daabaco laan shaqsi/keydka gaarka ah.
    • Koodhka duntan waa la tijaabinayaa.
    • Natiijada suurtagalka ah ee isku darka waa la tijaabiyaa (sida caadiga ah master).
    • Sida marxaladda is-dhexgalka joogtada ah / dhuumaha gaarsiinta joogtada ah

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.

  1. Ku wad imtixaanada gacanta adiga oo ordaya amarka npm test galka kaydka koorsadaada. Xaqiiji in imtixaanadii la dhameeyay.
  2. Deji jillaab ballan-qaad ah adiga oo ordaya install_hook.sh.
  3. Samee isbedeladaada kaydka deegaankaaga.
  4. Hubi in imtixaanada la sameeyay ka hor inta aanad samayn.

Kaydkaagu waa inuu sidan u ekaadaa ka dib marka la raaco tillaabooyinkan.
Xaaladaha caadiga ah ee isdhexgalka joogtada ah

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.

Koorsadan gaarka ah, waxaanu adeegsan doonaa hab-socodka shaqada ee isticmaala laamaha.

Aan daabacno koodkayaga.

Hawsha

  • 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

  1. U beddelo laanta master.
  2. Samee laan magaceedu yahay bugfix.
  3. 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/).
  4. Samee isbedelada.
  5. Daabac dunta bugfix meel fog oo kayd ah.
  6. Samee codsi jiid magaceed Isagoo hadalkiisa sii wata laan madax leh bugfix iyo laanta saldhigamaster.

Hubi inaad rakibtay master uu ku jiro fargeeto bakhaarka Sida "laanta saldhigga", kama jawaabi doono codsiyada isbeddelka ee kaydka agabka koorsada.

Tani waa sida kaydkaagu u ekaado.
Xaaladaha caadiga ah ee isdhexgalka joogtada ah

Kulanka

# ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ΡΡŒ Π½Π° Π²Π΅Ρ‚ΠΊΡƒ master. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π²Π΅Ρ‚ΠΊΡƒ bugfix.
git checkout master

# Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π²Π΅Ρ‚ΠΊΡƒ bugfix-remark.
git checkout -b bugfix

# Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ тСкст примСчания Π²Π½ΠΈΠ·Ρƒ ci.md.

# Π—Π°ΠΊΠΎΠΌΠΌΠΈΡ‚ΡŒΡ‚Π΅ измСнСния
git add ci.md
git commit -m "Add a remark about the list being opinionated"

# ΠžΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠΉΡ‚Π΅ Π²Π΅Ρ‚ΠΊΡƒ bugfix Π² ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.
git push --set-upstream origin bugfix

# Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ pull request ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ интСрфСйса GitHub ΠΊΠ°ΠΊ описано Π²Ρ‹ΡˆΠ΅

Oggolow codsiga jiidista "Ku darista faallo"

Hawsha

  1. Abuur codsi jiid
  2. Guji "Codsiga jiidida isku dar".
  3. Guji "xaqiiji isku darka".
  4. Guji "Delete laanta", mar dambe uma baahnin.

Kani waa jaantuska samaynta isku darka ka dib.
Xaaladaha caadiga ah ee isdhexgalka joogtada ah

️ Sii wad shaqada oo ku dar imtixaanada

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.

  1. Ku dar imtixaan
  2. Samee dhammaan imtixaanada oo xaqiiji in imtixaanka cusubi guul daraystay.
  3. Qor koodka.
  4. Samee imtixaanada, hubi in dhammaan imtixaanada ay gudbeen.
  5. Dib u habayn koodkaaga.
  6. 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.

  1. U beddelo laanta feature.
  2. 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);
    });

  3. Isku day inaad samayso imtixaanada. Hadii pre-commit jillaab ayaa la rakibay, isku daygii ballanku wuu guuldarraysan doonaa.
  4. 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. 
  5. Samee oo samee isbedel gudaha.
  6. Ku dhaji isbedelada laanta feature.

Hadda waa inaad haysataa wax sidan oo kale ah
Xaaladaha caadiga ah ee isdhexgalka joogtada ah

Kulanka


# ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π° Π²Π΅Ρ‚ΠΊΡƒ feature
git checkout feature

# Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ тСсты Π² ci.test.js ΠΊΠ°ΠΊ описано Π²Ρ‹ΡˆΠ΅

# Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² индСкс ci.test.js Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ·ΠΆΠ΅ Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΈΡ‚ΡŒ
git add ci.test.js

# ΠŸΠΎΠΏΡ‹Ρ‚Π°ΠΉΡ‚Π΅ΡΡŒ Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΈΡ‚ΡŒ тСсты. Если pre-commit hook установлСны, ΠΊΠΎΠΌΠΌΠΈΡ‚ Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Ρ‘Ρ‚.
git commit

# Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ тСкст Π² ci.md ΠΊΠ°ΠΊ описано Π²Ρ‹ΡˆΠ΅

# ВнСситС измСнСния ΠΈ Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‚ΡŒΡ‚Π΅ ΠΈΡ…
git add ci.md
git commit -m "Add the remaining CI steps"

# ΠžΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠΉΡ‚Π΅ измСнСния Π² Π²Π΅Ρ‚ΠΊΡƒ feature
git push

Isku-darka khilaafka

Tag Codsiga Beddelka Talaabooyinka dib u eegista.

In kasta oo aynaan wax khalad ah samayn oo imtixaanadii koodkayaga la baasay, haddana laanta iskuma dari karno feature ΠΈ master. Sababtu waa dunta kale bugfix ayaa la isku daray master intii aanu ka shaqaynaynay PR-gan.
Tani waxay abuurtaa xaalad meesha laanta fog master wuxuu leeyahay nooc ka cusub kan aan ku salaynay laanta feature. Sababtaas awgeed ma soo celin karno MADAXA master ilaa dhamaadka dunta feature. Xaaladdan oo kale, waxaan u baahannahay inaan ku biirno ama codsanno ballanqaadyo feature dib-u-dhigid master. GitHub dhab ahaantii waxay samayn kartaa isku darka tooska ah haddii aysan jirin khilaafyo. Hoogay, xaaladeena, labada laamood waxay leeyihiin isbeddelo tartan ah faylka ci.md. Xaaladdan waxaa loo yaqaanaa isku dhac, waxaana loo baahan yahay in aan gacan ku xallino.

Isku-dar ama dib-u-dhigid

Isku duwo

  • Wuxuu abuuraa ballan-qaad dheeri ah oo isku-dhafka ah wuxuuna kaydiyaa taariikhda shaqada.
    • 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

  1. Hubi in koodku ku yaalo laanta deegaanka master laga cusboonaysiiyay meel fog.
  2. U beddelo laanta feature.
  3. Ku billow isku darka laanta master. Isku dhaca isku dhafka ah ee ay sabab u tahay isbeddelada tartanka ku jira ci.md.
  4. Xalli khilaafka si liiskayada tillaabooyinka CI iyo qoraallada ku saabsan labadaba ay ugu jiraan qoraalka.
  5. Daabac ballan-qaadka isku-dhafka laanta fog feature.
  6. Hubi heerka codsiga jiidista ee GitHub UI oo sug ilaa isku darka la xalinayo.

Kulanka

# Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ Π² локальноС Π²Π΅Ρ‚ΠΊΠ΅ `master` ΠΎΠ±Π½ΠΎΠ²Π»Ρ‘Π½ ΠΈΠ· ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ рСпозитория.
git checkout master
git pull

# ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ΡΡŒ Π½Π° Π²Π΅Ρ‚ΠΊΡƒ feature
git checkout feature

# Π˜Π½ΠΈΡ†ΠΈΠΈΡ€ΡƒΠΉΡ‚Π΅ слияниС с Π²Π΅Ρ‚ΠΊΠΎΠΉ master 
git merge master

# A merge conflict related to concurrent changes to ci.md will be reported
# => Auto-merging ci.md
#    CONFLICT (content): Merge conflict in ci.md
#    Automatic merge failed; fix conflicts and then commit the result.

# Π Π°Π·Ρ€Π΅ΡˆΠΈΡ‚Π΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈ наш список шагов CI, ΠΈ Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ ΠΎ Π½Π΅ΠΌ ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ Π² тСкстС.
# ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ ci.md Ρ‡Ρ‚ΠΎΠ± ΠΎΠ½ Π½Π΅ содСрТал ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ΠΎΠ² ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π° слияния
git add ci.md
git merge --continue
# ΠΏΡ€ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ сообщСниС ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ

# ΠžΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠΉΡ‚Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚ слияния Π² ΡƒΠ΄Π°Π»Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ feature.
git push

# ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ статус запроса Π½Π° измСнСния Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ интСрфСйсС GitHub, Π΄ΠΎΠΆΠ΄ΠΈΡ‚Π΅ΡΡŒ ΠΏΠΎΠΊΠ° слияниС Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ.

Shaqo fiican!

Waad dhammaatay liiska oo hadda waxaad u baahan tahay inaad ogolaato codsiga jiidista master.

Hawsha: Ansixi codsiga jiidista "Tallaabooyinka dib u eegista"

  1. Fur codsi jiid
  2. Guji "Codsiga jiidida isku dar".
  3. Guji "xaqiiji isku darka".
  4. Guji "Delete branch" maadaama aanan u baahnayn.

Tani waa kaydkaaga hadda
Xaaladaha caadiga ah ee isdhexgalka joogtada ah

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

  1. U beddelo laanta master degaan ahaan.
  2. Cusbooneysii kaydka deegaanka ee kaydka fog
  3. Soo celi ballan qaadkii isku darka PR Talaabooyinka dib u eegista Π² master.
  4. Ku daabac isbeddelada kaydka fog

Tani waa taariikhda kaydka oo leh ballan-qaadkii midayntu dib loo celiyay
Xaaladaha caadiga ah ee isdhexgalka joogtada ah

Kulanka

# ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ΡΡŒ Π½Π° Π²Π΅Ρ‚ΠΊΡƒ master.
git checkout master

# ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΈΠ· ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ рСпозитория.
git pull

# ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚ слияния PR Steps review Π² master.
# ΠœΡ‹ отмСняСм ΠΊΠΎΠΌΠΌΠΈΡ‚ слияния, поэтому Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π²Π΅Ρ‚ΠΊΡƒ истории, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΠΌ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ
git show HEAD

# ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» послСдним Π² Π²Π΅Ρ‚ΠΊΠ΅ master Π΄ΠΎ слияния, Π±Ρ‹Π» ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΡ‘Π½ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ
git revert HEAD -m 1
# ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π΅ ΠΌΠ΅Π½ΡΡ‚ΡŒ сообщСния ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²

# ΠžΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠΉΡ‚Π΅ измСнСния Π² ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ
git push

️ Is tijaabin

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

  1. Samee dun la yiraahdo feature-fix una wareego.
  2. Ka haajiraan dhammaan ballanqaadyada laanta hore feature dun cusub. In la xalliyo isku dhafka isku dhaca ee dhacay intii lagu jiray socdaalka.

    Xaaladaha caadiga ah ee isdhexgalka joogtada ah

  3. Ku dar tijaabada dib u celinta ci.test.js:

    it('does not contain the sneaky bug', () => {
    expect( /.*sneakys+bug.*/gi.test(fileContents)).toBe(false);
    });

  4. Ku samee imtixaanada gudaha si aad u hubiso in ayan ku dhicin.
  5. Ka saar qoraalka "oo leh bug qarsoon" gudaha ci.md.
  6. Ku dar isbeddelada tijaabada iyo isbeddelada liiska tillaabooyinka tusmada oo samee.
  7. Ku daabac laanta meel fog.

Waa inaad ku dhameysato wax la mid ah kan:
Xaaladaha caadiga ah ee isdhexgalka joogtada ah

Kulanka

# Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π²Π΅Ρ‚ΠΊΡƒ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ feature-fix ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ΡΡŒ Π½Π° Π½Π΅Π΅.
git checkout -b feature-fix

# ΠŸΠ΅Ρ€Π΅Π½Π΅ΡΠΈΡ‚Π΅ всС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈΠ· Π±Ρ‹Π²ΡˆΠ΅ΠΉ Π²Π΅Ρ‚ΠΊΠΈ feature Π² Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ. Π Π°Π·Ρ€Π΅ΡˆΠΈΡ‚Π΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ слияния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ ΠΏΡ€ΠΈ пСрСносС.
# ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ Ρ…ΡΡˆΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²:
# - ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ с ΠΏΠ΅Ρ€Π²ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ списка: C0
# - Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ послСдниС элСмСнты списка: C2
git log --oneline --graph
git cherry-pick C0..C2
# Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚Π΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ слияния
# - ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ ci.md ΠΈ/ΠΈΠ»ΠΈ ci.test.js
# - Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π² индСкс
# - Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ "git cherry-pick --continue", ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π΅ ΠΌΠ΅Π½ΡΡ‚ΡŒ сообщСниС ΠΊΠΎΠΌΠΌΠΈΡ‚Π°

# Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ рСгрСссионный тСст Π² ci.test.js
# ЗапуститС тСсты локально, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‚ΡΡ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ.

# Π£Π΄Π°Π»ΠΈΡ‚Π΅ тСкст " with a sneaky bug" Π² ci.md.

# Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² индСкс измСнСния тСстов ΠΈ Π² спискС шагов ΠΈ Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‚ΡŒΡ‚Π΅ ΠΈΡ….
git add ci.md ci.test.js
git commit -m "Fix the bug in steps list"

# ΠžΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠΉΡ‚Π΅ Π²Π΅Ρ‚ΠΊΡƒ Π² ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.
git push --set-upstream origin feature-fix

Abuur codsi jiid

Abuur codsi jiidasho leh cinwaan Hagaajinta muuqaalka. Ku rakib feature-fix sida "laanta madaxa" iyo master sida "laanta saldhiga".
Fadlan sug inta ay imtixaanadu dhammaanayaan. Waxaad ka arki kartaa heerka imtixaanada xagga hoose ee doodda PR.

Hubi inaad rakibtay master uu ku jiro fargeeto bakhaarka Sida "laanta saldhigga", kama jawaabi doono codsiyada isbeddelka ee kaydka agabka koorsada.

Oggolow codsiga jiidista "Hagaajinta sifada"

Waad ku mahadsan tahay sixitaanka! Fadlan u oggolow isbeddellada master codsi jiid

Hawsha

  1. Guji "Codsiga jiidida isku dar".
  2. Guji "xaqiiji isku darka".
  3. Guji "Delete branch" maadaama aanan u baahnayn.

Tani waa waxa ay tahay inaad haysato xilligan.
Xaaladaha caadiga ah ee isdhexgalka joogtada ah

Hambalyo!

Waxaad dhamaystirtay dhammaan tillaabooyinka ay dadku caadi ahaan qaadaan inta lagu jiro is-dhexgalka joogtada ah.

Haddii aad wax dhibaato ah ku aragto koorsada ama aad taqaanid sida loo hagaajiyo, fadlan ku dhex abuur arrin bakhaarro leh agab koorsada. Koorsadan sidoo kale waxay leedahay nooca isdhexgalka Isticmaalka GitHub Learning Lab sida madal.

Source: www.habr.com

Add a comment