ProHoster > Blog > Tsamaiso > Maemo a tloaelehileng a nang le kopanyo e tsoelang pele
Maemo a tloaelehileng a nang le kopanyo e tsoelang pele
Na u ithutile litaelo tsa Git empa u batla ho nahana hore na ho kopanya ho tsoelang pele (CI) ho sebetsa joang? Kapa mohlomong u batla ho ntlafatsa mesebetsi ea hau ea letsatsi le letsatsi? Thupelo ena e tla u fa litsebo tse sebetsang tsa kopanyo e tsoelang pele u sebelisa polokelo ea GitHub. Thupelo ena ha ea rereloa ho ba wizate eo u ka e tobetsang feela; ho fapana le hoo, u tla etsa liketso tse tΕ‘oanang le tseo batho ba hlileng ba li etsang mosebetsing, ka tsela e tΕ‘oanang le eo ba e etsang. Ke tla hlalosa khopolo ha u ntse u feta mehatong e amehang.
Re etsa'ng?
Ha re ntse re tsoela pele, butle-butle re tla etsa lethathamo la mehato e tloaelehileng ea CI, e leng mokhoa o motle oa ho hopola lenane lena. Ka mantsoe a mang, re tla theha lethathamo la liketso tseo baetsi ba tsona ba li nkang ha ba ntse ba etsa kopanyo e tsoelang pele, ba etsa kopanyo e tsoelang pele. Hape re tla sebelisa sete e bonolo ea liteko ho tlisa ts'ebetso ea rona ea CI haufi le ea 'nete.
GIF ena e bonts'a boitlamo bo bolokiloeng polokelong ea hau ha u ntse u tsoela pele thupelong. Joalokaha u ka bona, ha ho letho le rarahaneng mona mme ke ntho e hlokahalang feela.
U tla feta maemong a latelang a tloaelehileng a CI:
Sebetsa ka tΕ‘obotsi;
TΕ‘ebeliso ea liteko tse ikemetseng ho netefatsa boleng;
Ho kenngwa tshebetsong ha mosebetsi o ka sehloohong;
Ho rarolla likhohlano ha ho kopanngoa makala (ho kopanya likhohlano);
Phoso e etsahala tikolohong ea tlhahiso.
U tla ithuta eng?
U tla khona ho araba lipotso tse latelang:
Ho kopanya ho tsoelang pele (CI) ke eng?
Ke mefuta efe ea liteko tse ikemetseng tse sebelisoang ho CI, 'me ho arabela liketsong life tseo li bakoang ke tsona?
Likopo tsa ho hula ke eng 'me li hlokahala neng?
Test Driven Development (TDD) ke eng mme e amana joang le CI?
Na ke lokela ho kopanya kapa ho fokotsa liphetoho?
Khutlisetsa morao kapa u lokise mofuta o latelang?
Qalong ke ile ka fetolela lintho tse kang "ho hula likopo" hohle, empa ka lebaka leo ke ile ka etsa qeto ea ho khutlisetsa lipolelo tsa Senyesemane libakeng tse ling ho fokotsa tekanyo ea bohlanya temaneng. Ka linako tse ling ke tla sebelisa "programmer surzhik" joalo ka leetsi le monate "itlama" moo batho ba e sebelisang mosebetsing.
Ho kopanya ho tsoelang pele ke eng?
Kopanyo e Tsoelang Pele, kapa CI, ke mokhoa oa botekgeniki oo setho ka seng sa sehlopha se kopanyang khoutu ea bona sebakeng se tloaelehileng sa polokelo bonyane hang ka letsatsi, 'me khoutu e hlahisoang e tlameha ho hahoa bonyane ntle le liphoso.
Ho na le ho se lumellane ka lentsoe lena
Taba ea khang ke makhetlo a mangata a ho kopanya. Ba bang ba pheha khang ea hore ho kopanya khoutu hanngoe feela ka letsatsi ha hoa lekana ho kopanya kamehla. Ho fanoe ka mohlala oa sehlopha moo bohle ba nkang khoutu e ncha hoseng ebe ba e kopanya hang ka shoalane. Le hoja ena e le khanyetso e utloahalang, ka kakaretso ho lumeloa hore tlhaloso ea hang ka letsatsi e sebetsa ka mokhoa o utloahalang, e totobetse, βme e loketse lihlopha tsa boholo bo fapaneng.
Khanyetso e 'ngoe ke hore C++ ha e sa le eona feela puo e sebelisoang ntlafatsong, 'me e hloka feela kopano e se nang liphoso e le mokhoa oa ho netefatsa e fokola. Sete e 'ngoe ea liteko (mohlala, liteko tse etsoang sebakeng sa heno) le tsona li tlameha ho phethoa ka katleho. Hona joale, sechaba se ntse se tsoela pele ho etsa hore sena e be tlhokahalo, 'me nakong e tlang "haha + liteko tsa lihlopha" mohlomong e tla ba mokhoa o tloaelehileng, haeba o se o ntse o le teng.
Kopanyo e Tsoelang Pele fapana le phepelo e tsoelang pele (Continuous Delivery, CD) ka hore ha e hloke mokhethoa oa tokollo ka mor'a potoloho e 'ngoe le e 'ngoe ea kopanyo.
Lethathamo la mehato eo re tla e sebelisa nakong eohle ea thupelo
Kenya khoutu ea morao-rao. Theha lekala ho tloha master. Qala ho sebetsa.
Etsa boitlamo lekaleng la hau le lecha. Haha 'me u leke sebakeng sa heno. Feta? E-ea mohatong o latelang. O hlolehile? Lokisa liphoso kapa liteko 'me u leke hape.
Tobetsa sebakeng sa hau sa polokelo se hole kapa lekaleng le hole.
Etsa kopo ea ho hula. Buisanang ka liphetoho, eketsa boitlamo bo eketsehileng ha lipuisano li ntse li tsoela pele. Etsa hore liteko li fete lekaleng la likarolo.
Kopanya/rebase kemiso e tsoang ho master. Etsa hore liteko li fete sephetho sa ho kopanya.
Tsamaisa ho tloha lekaleng la likarolo ho ea tlhahisong.
Haeba ntho e 'ngoe le e' ngoe e le ntle ka tlhahiso ka nako e itseng, kopanya liphetoho ho ea pele.
οΈ Boitokisetso
Etsa bonnete ba hore u na le software e nepahetseng
O qetile? Haeba ha o so fetole litlhophiso tsa kamehla, polokelo ea hau ea thupelo e kanna ea bitsoa continuous-integration-team-scenarios-students, e fumaneha akhaonteng ea hau ea GitHub mme URL e shebahala tjena
Ke tla bitsa aterese ena feela <URL ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ>.
Li-angle brackets joalo ka <ΡΡΡ> ho tla bolela hore u tlameha ho nkela polelo e joalo sebaka ka boleng bo loketseng.
Etsa bonnete ba hore Liketso tsa GitHub e kenyellelitsoe polokelong ea thupelo ena. Haeba li sa lumelloa, ka kopo li lumelle ka ho tobetsa konopo e kholo bohareng ba leqephe, eo u ka fihlang ho eona ka ho tobetsa Liketso ho sebopeho sa GitHub.
U ke ke ua khona ho qeta thupelo ka ho latela litaelo tsa ka haeba Liketso tsa GitHub li sa lumelloa.
U ka sebelisa bokhoni ba GitHub ho fana ka Markdown ho bona boemo ba hajoale ba lenane leo re le ngolang mona.
https://github.com/<your GitHub user name>/continuous-integration-team-scenarios-students/blob/master/ci.md
Mabapi le likarabo
Leha tsela e molemohali ea ho qeta thupelo ena e le ho iketsetsa, o kanna oa ba le mathata.
Haeba u ikutloa hore ha u utloisise seo u lokelang ho se etsa 'me u sitoa ho tsoela pele, u ka sheba khoele solution, e leng sebakeng sa hau sa polokelo ea ho qala.
Ke kopa o seke oa kopanya solution Π² master nakong ea thupelo. U ka sebelisa lekala lena ho fumana seo u lokelang ho se etsa, kapa ho bapisa khoutu ea hau le ea mongoli, u sebelisa bokhoni bohle boo Git e re fang eona. Haeba u lahlehile ka ho feletseng, u ka nka sebaka sa lekala ka ho feletseng master lekaleng solution ebe o seta bocha bukana ea hau ea ho sebetsa ho ea mohatong oa thupelo oo u o hlokang.
Sebelisa sena feela haeba u hlile u se hloka
Kenya khoutu ea hau
git add .
git commit -m "Backing up my work"
Litaelo tsena
reha bocha master Π² master-backup;
reha bocha solution Π² master;
etela lekaleng le lecha master le ho ngola bocha litaba tsa bukana e sebetsang;
Theha lekala la "tharollo" ho tsoa ho "master" (e neng e le "tharollo") haeba u hloka lekala la "tharollo" nakong e tlang.
Ka mor'a mehato ena u ka sebelisa git log master ho fumana hore na o hloka boitlamo bofe.
U ka seta bukana ea hau ea ts'ebetso ho etsa boitlamo bona ka tsela ena:
git reset --hard <the SHA you need>
Haeba u thabetse sephetho, ka nako e 'ngoe u tla hloka ho phatlalatsa mofuta oa hau oa polokelo sebakeng se hole sa polokelo. U se ke ua lebala ho hlalosa ka ho hlaka lekala le hΕle ha u etsa sena.
git push --force origin master
Ka kopo hlokomela hore re sebelisa git push --force. Ha ho na monyetla oa hore u batle ho etsa sena khafetsa, empa re na le boemo bo ikhethileng mona le mosebelisi a le mong oa polokelo eo, ho feta moo, a utloisisang seo a se etsang.
Ho qala ho sebetsa
Ha re qaleng ho bokella lethathamo la rona la mehato ea CI. Ka tloaelo u ne u tla qala mohato ona ka ho sheba mofuta oa morao-rao oa khoutu ho tsoa sebakeng sa polokelo e hole, empa ha re na polokelo ea lehae, kahoo re e kopanya ho tsoa ho e hole.
οΈ Mosebetsi: ntlafatsa polokelo ea lehae, theha lekala ho tsoa master, qala ho sebetsa
Koala sebaka sa polokelo ho tloha <URL ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ>.
Matha npm install bukeng ea polokelo ea lithupelo; Re e hloka ho kenya Jest, eo re e sebelisang ho etsa liteko.
Theha lekala 'me u le rehe lebitso feature. Fetohela ho khoele ena.
Kenya khoutu ea teko ho ci.test.js pakeng tsa maikutlo a nkopang ho etsa sena.
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);
});
Kenya mongolo ka mehato ea pele e 4 faeleng 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.
Theha boitlamo lekaleng le lecha, haha ββ'me u leke sebakeng sa heno
Re tlil'o theha liteko tse lokelang ho etsoa pele re etsa, ebe re etsa khoutu.
Maemo a tloaelehileng ha liteko li itlhahisa
Sebakeng sa heno:
Ka ho tswelapele kapa ho latela diphetoho tse nepahetseng tsa khoutu;
Ho boloka (bakeng sa lipuo tse tolokiloeng kapa tse bokelletsoeng ka JIT);
Nakong ea kopano (ha ho kopanngoa ho hlokahala);
Ka boitlamo;
Ha o phatlalatsa sebakeng sa polokelo se arolelanoang.
Ho seva sa moaho kapa tikolohong ea kaho:
Ha khoutu e phatlalatsoa lekaleng la motho ka mong/bobolokelong.
Khouto khoeleng ena e ntse e lekoa.
Sephetho se ka bang teng sa ho kopanya se lekoa (hangata ka master).
E le mohato o tsoelang pele oa ho kopanya / phaephe e tsoelang pele ea phano
Ka tloaelo, ha sehlopha sa liteko se sebetsa ka potlako, hangata u ka khona ho se tsamaisa. Kabo e tloaelehileng ea sethala e kanna ea shebahala tjena.
Liteko tse potlakileng tsa yuniti - nakong ea kaho, ka lipeipi tsa CI
Liteko tse liehang tsa yuniti, likarolo tse potlakileng le liteko tsa kopanyo - ka boitlamo, liphaepheng tsa CI
Liteko tse liehang tsa karolo le ho kopanya - ka phaepheng ea CI
Teko ea ts'ireletso, tlhahlobo ea mojaro le liteko tse ling tse jang nako kapa tse theko e boima - ho liphaephe tsa CI / CD, empa feela ka mekhoa / methati / liphaephe tse itseng tsa kaho, mohlala, ha u lokisa mokhethoa oa tokollo kapa ha a sebetsa ka letsoho.
οΈ Mosebetsi
Ke fana ka tlhahiso ea ho tsamaisa liteko ka letsoho pele u sebelisa taelo npm test. Kamora moo, ha re kenyeng hook ea git ho etsa liteko tsa rona ka boitlamo. Ho na le ts'ebetso e le 'ngoe: Li-hook tsa Git ha li nkoe e le karolo ea polokelo, ka hona li ke ke tsa etsoa ho tsoa ho GitHub hammoho le lisebelisoa tse ling tsa thupelo. Ho kenya hook o hloka ho matha install_hook.sh kapa kopitsa faele repo/hooks/pre-commit ho directory ea lehae .git/hooks/.
Ha u etsa boitlamo, u tla bona hore liteko li sebetsa 'me ba hlahloba ho bona hore na mantsoe a bohlokoa a teng lethathamong.
Etsa liteko ka letsoho ka ho tsamaisa taelo npm test foleng ea polokelo ea lithuto tsa hau. Netefatsa hore liteko li phethiloe.
Beha hook ea boitlamo (hook ea pele) ka ho matha install_hook.sh.
Kenya liphetoho tsa hau sebakeng sa hau sa polokelo ea lehae.
Etsa bonnete ba hore liteko li etsoa pele u etsa kopo.
Sebaka sa hau sa polokelo se lokela ho shebahala tjena ka mor'a ho latela mehato ena.
Melao
# Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ pre-commit hook Π²ΡΠΏΠΎΠ»Π½ΠΈΠ² install_hook.sh.
# ΠΠ°ΠΊΠΎΠΌΠΌΠΈΡΡΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ "Add first CI steps" Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΏΡΠΈ ΠΊΠΎΠΌΠΌΠΈΡΠ΅.
git add ci.md ci.test.js
git commit -m "Add first CI steps"
# Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΡΠ΅ΡΡΡ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠΌ.
Phatlalatsa khoutu sebakeng sa polokelo se hole kapa lekaleng le hole
Hang ha ba qetile ho sebetsa sebakeng sa heno, bahlahisi ba atisa ho etsa hore khoutu ea bona e fumanehe phatlalatsa e le hore qetellong e ka kopanngoa le sechaba. Ka GitHub, sena se finyelloa ka ho phatlalatsa mosebetsi ho kopi ea hau ea polokelo (foroko ea hau) kapa lekaleng la motho.
Ka lifereko, moqapi o kopanya polokelo e arolelanoang e hole, a iketsetsa kopi ea eona e hole, e tsejoang hape e le fereko. E ntan'o kopanya polokelo ena ea botho hore e sebetse le eona sebakeng sa heno. Ha mosebetsi o phethiloe 'me li-commit li entsoe, o li sutumelletsa ka ferekong ea hae, moo li fumanehang ho ba bang' me li ka kopanngoa le polokelo e tloaelehileng. Mokhoa ona o sebelisoa hangata mererong e bulehileng ea mohloli ho GitHub. E boetse e sebelisoa thupelong ea ka e tsoetseng pele [Team Work le CI with Git] (http://devops.redpill.solutions/).
Mokhoa o mong ke oa ho sebelisa polokelo e le 'ngoe feela e hole le ho bala lekala feela master polokelo e arolelanoang "e sirelelitsoeng". Boemong bona, bahlahisi ka bomong ba phatlalatsa khoutu ea bona makaleng a polokelo e hole e le hore ba bang ba ka sheba khoutu ena, haeba tsohle li lokile, li kopanye le. master polokelo e arolelanoang.
Thutong ena, re tla be re sebelisa mokhoa oa ho sebetsa o sebelisang makala.
Ha re phatlalatseng khoutu ea rona.
οΈ Mosebetsi
Phatlalatsa liphetoho lekaleng le hole le nang le lebitso le tΕ‘oanang le leo u sebetsang ho lona
Melao
git push --set-upstream origin feature
Etsa kopo ea ho hula
Etsa kopo ea ho hula ka sehlooho Tlhahlobo ea mehato. Kenya feature joalo ka "lekala la hlooho" le master joalo ka "kala ea motheo".
Netefatsa hore o kentse master hae fereko polokelo Joaloka "lekala la motheo", nke ke ka araba likopo tsa liphetoho sebakeng sa polokelo ea thepa.
Ho GitHub lingo, "lekala la motheo" ke lekala leo u thehang mosebetsi oa hau ho lona, ββββ'me "hlooho ea lekala" ke lekala le nang le liphetoho tse reriloeng.
Buisanang ka liphetoho, eketsa boitlamo bo bocha ha puisano e ntse e tsoela pele
Kopo ea ho hula(PR)
Kopo ea ho hula(PR) ke mokhoa oa ho buisana le ho ngola khoutu, hammoho le ho etsa tlhahlobo ea khoutu. Likopo tsa ho hula li reheletsoe ka mokhoa o akaretsang oa ho kopanya liphetoho tsa motho ka mong khoutu e akaretsang. Ka tloaelo, motho o kopanya polokelo ea projeke e hole mme o sebetsa ka khoutu sebakeng sa heno. Kamora moo, o kenya khoutu sebakeng sa hae sa polokelo se hole mme o kopa ba ikarabellang bakeng sa polokelo ea semmuso hore ba nke(Hula) khoutu ea eona polokelong ea bona ea lehae, moo ba hlahlobang le ho kopanya (tsamaea) ea hae. Khopolo ena e boetse e tsejoa ka mabitso a mang, mohlala, kopanye kopo.
Ha e le hantle ha ua tlameha ho sebelisa tΕ‘obotsi ea kopo ea ho hula ea GitHub kapa li-platform tse tΕ‘oanang. Lihlopha tsa nts'etsopele li ka sebelisa mekhoa e meng ea puisano, ho kenyelletsa puisano le sefahleho, mehala ea lentsoe, kapa lengolo-tsoibila, empa ho ntse ho na le mabaka a mangata a ho sebelisa likopo tsa ho hula ka mokhoa oa liforamu. Tse ling tsa tsona ke tsena:
e le sebaka sa ho bona maikutlo mabapi le mosebetsi o ntseng o tsoela pele ho tsoa ho li-autotesters le lithaka;
ho etsoa semmuso ha litlhahlobo tsa khoutu;
e le hore hamorao u ka fumana mabaka le maikutlo a ka morao ho sena kapa sengoathoana sa khoutu.
Ka tloaelo o etsa kopo ea ho hula ha o hloka ho bua ka ntho e itseng kapa ho fumana maikutlo. Ka mohlala, haeba u sebetsa karolong e ka sebelisoang ka litsela tse fetang tse le 'ngoe, u ka etsa kopo ea ho hula pele u ngola mohala oa pele oa khoutu ho arolelana maikutlo a hau le ho buisana ka merero ea hau le basebetsi-'moho le uena. Haeba mosebetsi o le bonolo, kopo ea ho hula e buloa ha ntho e se e entsoe, e ikemiselitse, 'me e ka buisanoa. Maemong a mang, o kanna oa batla ho bula PR ka mabaka a taolo ea boleng feela: ho etsa liteko tse ikemetseng kapa ho qala tlhahlobo ea khoutu. Ho sa tsotellehe hore na u etsa qeto efe, u se ke ua lebala ho @ bolela batho bao tumello ea bona eo ue batlang ka kopo ea hau ea ho hula.
Ka tloaelo, ha u theha PR, u etsa se latelang.
Hlalosa hore na u batla ho fetola eng le hore na u batla ho e fetola hokae.
Ngola tlhaloso e hlalosang sepheo sa liphetoho. U ka 'na ua batla:
eketsa eng kapa eng ea bohlokoa e sa totobaleng ho tsoa khoutong, kapa ho hong ho bohlokoa bakeng sa ho utloisisa moelelo oa taba, joalo ka #bugs le linomoro tsa boitlamo;
@mention mang kapa mang eo u batlang ho qala ho sebetsa le eena, kapa u ka @mention ho maikutlo hamorao;
kopa basebetsi-'moho ho thusa ka ntho e itseng kapa ho hlahloba ntho e itseng.
Hang ha u bula PR, liteko tse lokiselitsoeng ho sebetsa maemong a joalo lia etsoa. Tabeng ea rona, sena e tla ba sete e tΕ‘oanang ea liteko tseo re li entseng sebakeng sa heno, empa morerong oa sebele ho ka 'na ha e-ba le liteko le licheke tse eketsehileng.
Ka kopo ema ha liteko li ntse li phethoa. U ka bona boemo ba liteko botlaaseng ba puisano ea PR ho sebopeho sa GitHub. Tsoela pele ha liteko li phethiloe.
οΈ Kenya molaetsa mabapi le ho se be teng ha lenane la mehato ea CI
Lethathamo le sebelisitsoeng thupelong ena le na le mabaka a utloahalang le a ikemetseng, re lokela ho eketsa lintlha ka sena.
οΈ Mosebetsi: theha kopo ea ho hula maikutlo ana
Fetolela lekaleng master.
Theha lekala le bitsoang bugfix.
Kenya mongolo qetellong ea faele 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/).
Etsa liphetoho.
Phatlalatsa khoele bugfix sebakeng sa polokelo se hole.
Etsa kopo ea ho hula e bitsoang Ho eketsa tlhaloso e nang le lekala la hlooho bugfix le lekala la motheomaster.
Netefatsa hore o kentse master hae fereko polokelo Joaloka "lekala la motheo", nke ke ka araba likopo tsa liphetoho sebakeng sa polokelo ea thepa.
Sena ke kamoo polokelo ea hau e lokelang ho shebahala kateng.
Sena ke sets'oants'o sa boitlamo ka mor'a ho kopanya.
οΈ Tsoela pele ho sebetsa le ho eketsa liteko
Ho sebelisana ka kopo ea ho hula hangata ho fella ka mosebetsi o eketsehileng. Hangata sena ke sephetho sa tlhahlobo ea khoutu kapa puisano, empa thutong ea rona re tla etsa mohlala oa sena ka ho kenyelletsa lintho tse ncha lethathamong la rona la mehato ea CI.
Khokahano e tsoelang pele hangata e kenyelletsa tlhahlobo e itseng. Litlhoko tsa khaso ea liteko lia fapana 'me hangata li fumanoa tokomaneng e bitsoang "contribution guidelines". Re tla e boloka e le bonolo mme re kenye teko bakeng sa mola o mong le o mong lethathamong la rona la tlhahlobo.
Ha u etsa mesebetsi, leka ho etsa liteko pele. Haeba u kentse ka nepo pre-commit hook pejana, tlhahlobo e sa tsoa eketsoa e tla etsoa, ββββe tla hloleha, 'me ha ho letho le tla etsoa. Hlokomela hore ke kamoo re tsebang hore liteko tsa rona li leka ho hong. Hoa thahasellisa hore haeba re qalile ka khoutu pele ho liteko, ho feta liteko ho ka bolela hore khoutu e sebetsa kamoo ho neng ho lebeletsoe kateng, kapa hore liteko li ne li sa leke letho. Ho feta moo, haeba re ne re sa ngola liteko qalong, mohlomong re ka be re li lebetse ka ho feletseng, kaha ho ne ho se letho le ka beng le ile la re hopotsa.
Tsoelo-pele e Lekoang (TDD)
TDD e khothaletsa liteko tsa ho ngola pele ho khoutu. Mokhoa o tloaelehileng oa ts'ebetso o sebelisang TDD o shebahala tjena.
Kenya teko.
Etsa liteko tsohle 'me u netefatse hore tlhahlobo e ncha ha e atlehe.
Ngola khoutu.
Etsa liteko, etsa bonnete ba hore liteko tsohle lia feta.
Fetola khoutu ea hau.
Pheta-pheta.
Hobane liphetho tsa liteko tse sa atleheng hangata li bonts'oa ka bofubelu, 'me tse fetileng hangata li bonts'oa ka botala, potoloho ena e boetse e tsejoa e le red-green-refactor.
οΈ Mosebetsi
Ntlha ea pele, leka ho etsa liteko le ho li tlohela hore li hlolehe, ebe u eketsa le ho fana ka mongolo oa lenane la mehato ea CI ka boeona. U tla bona hore liteko lia feta ("tala").
Ebe u phatlalatsa khoutu e ncha sebakeng sa polokelo e hole 'me u shebelle liteko tse tsamaisoang ho sebopeho sa GitHub botlaaseng ba puisano ea kopo ea ho hula le ntlafatso ea boemo ba PR.
Fetolela lekaleng feature.
Kenya liteko tsena ho ci.test.js kamora mohala wa ho qetela 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);
});
Leka ho etsa liteko. Haeba pre-commit hook e kentsoe, teko ea boitlamo e tla hloleha.
Ebe eketsa mongolo ona ho 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.
Le hoja re sa ka ra etsa letho le phoso 'me liteko tsa khoutu ea rona li fetile, re ntse re sitoa ho kopanya lekala feature ΠΈ master. Ke hobane khoele e 'ngoe bugfix e kopantsoe le master ha re ntse re sebetsa PR ena.
Sena se baka boemo moo lekala le hole master e na le mofuta o mocha ho feta oo re thehileng lekala ho oona feature. Ka lebaka lena re ke ke ra khutlisa HEAD feela master ho isa qetellong ya khoele feature. Boemong bona, re hloka ho kopanya kapa ho kenya kopo feature rebase master. GitHub e hlile e ka kopanya othomathike haeba ho se na likhohlano. Ijoo, boemong ba rona, makala ka bobeli a na le liphetoho tse qothisanang lehlokoa le faele ci.md. Boemo bona bo tsejoa e le khohlano ea ho kopanya, 'me re hloka ho e rarolla ka letsoho.
Kopanya kapa fokotsa
Kopanya
E theha boitlamo bo eketsehileng ba ho kopanya mme e boloka nalane ea mosebetsi.
E boloka boitlamo ba mantlha ba makala ka litempe tsa bona tsa nako le bangoli.
E boloka SHA ea boitlamo le lihokela ho tsona lipuisanong tsa kopo ea phetoho.
E hloka tharollo ea nako e le 'ngoe ea likhohlano.
E etsa hore pale e se ke ea hlaka.
Pale e ka ba thata ho bala ka lebaka la palo e kholo ea makala (ho hopotsa mohala oa IDE).
E etsa hore ho lokisa bothata ho be thata le ho feta, mohlala. git bisect ha e na thuso - e tla fumana feela boitlamo ba ho kopanya.
Khutlisa
Li-replays li etsoa ho tloha lekaleng la hajoale ka holim'a lekala la motheo ka ho latellana.
Lits'ebetso tse ncha tse nang le li-SHA tse ncha lia hlahisoa, li etsa hore boitlamo ba GitHub bo ts'oane le likopo tsa mantlha tsa ho hula, empa eseng maikutlo a tΕ‘oanang.
Boitlamo bo ka kopanngoa hape le ho fetoloa ts'ebetsong, kapa tsa kopanngoa ho ba bo le bong.
Likhohlano tse ngata li ka hloka ho rarolloa.
E u lumella ho boloka pale ea mola.
Pale e ka ba bonolo ho e bala hafeela e se telele haholo ntle le lebaka le utloahalang.
Ho lokisa liphoso le ho rarolla mathata ho bonolo hanyane: ho etsa hore ho khonehe git bisect, e ka etsa hore li-rollback tsa othomathike li hlake le ho tseba esale pele.
E hloka ho phatlalatsa lekala le nang le boitlamo bo fallang le folakha --force ha e sebelisoa le likopo tsa ho hula.
Ka tloaelo, lihlopha li lumellana ho sebelisa leano le tΕ‘oanang kamehla ha li hloka ho kopanya liphetoho. Sena e ka ba kopano e "hloekileng" kapa boitlamo bo "hloekileng" holimo, kapa ho hong ho lipakeng, joalo ka ho etsa boitlamo ka holimo ka kopanelo(git rebase -i) sebakeng sa makala bakeng sa makala a sa phatlalatsoang sebakeng sa polokelo ea sechaba, empa a kopanngoa bakeng sa makala a "sechaba".
Mona re tla sebelisa ho kopanya.
οΈ Mosebetsi
Etsa bonnete ba hore khoutu e lekaleng la lehae master e nchafalitsoeng ho tsoa polokelong e hole.
Fetolela lekaleng feature.
Qala ho kopanya le lekala master. Khohlano ea ho kopanya ka lebaka la liphetoho tse qothisanang lehlokoa le ci.md.
Rarolla khohlano e le hore lenane la rona la mehato ea CI le lintlha tse mabapi le eona li lule li le teng mongolong.
Phatlalatsa boitlamo bo kopantseng lekaleng le hole feature.
Sheba boemo ba kopo ea ho hula ho GitHub UI 'me u eme ho fihlela kopanyo e rarollotsoe.
U se u qetile ka lethathamo mme joale u hloka ho amohela kopo ea ho hulela master.
οΈ Mosebetsi: Amohela kopo ea ho hula "Tlhahlobo ea Mehato"
Bula kopo ea ho hula.
Tobetsa "Ho kopanya kopo ea ho hula".
Tobetsa "Tiisa ho kopanya".
Tobetsa "Delete lekala" kaha ha re sa e hloka.
Sena ke sebaka sa hau sa polokelo hajoale
Phoso ea sehlahisoa
Ho boleloa hore βteko e ka sebelisoa ho bontΕ‘a boteng ba liphoso, empa le ka mohla e le ho bontΕ‘a bosieo ba tsona.β Leha re bile le liteko mme ba sa re bonts'e liphoso, kokoana e bolotsana e ile ea kena tlhahisong.
Boemong bo joalo, re lokela ho ela hloko:
se tsamaisoang tlhahisong;
khoutu ka khoele master ka phoso, moo bahlahisi ba ka qalang mosebetsi o mocha.
Na ke lokela ho khutlisa kapa ke e lokise mofuteng o latelang?
Ho khutlela morao ke mokhoa oa ho kenya mofuta o tsebahalang oa pejana ho tlhahiso le ho khutlisetsa boitlamo bo nang le phoso. "Ho lokisa pele" ke tlatsetso ea tokiso ho master le ho tsamaisa mofuta o mocha kapele kamoo ho ka khonehang. Hobane li-API le li-schemas tsa database li fetoha joalo ka ha khoutu e romelloa tlhahisong, ka phepelo e tsoelang pele le tΕ‘ireletso e ntle ea liteko, ho khutlela morao hangata ho thata haholo ebile ho kotsi ho feta ho e lokisa mofuteng o latelang.
Kaha ho khutlela morao ha ho na kotsi ho rona, re tla tsamaea ka tsela ena, hobane e re lumella
lokisa phoso ho sehlahisoa kapele kamoo ho ka khonehang;
etsa khoutu ka master hanghang e loketse ho qala mosebetsi o motjha.
οΈ Mosebetsi
Fetolela lekaleng master sebakeng sa heno.
Ntlafatsa polokelo ea lehae ho tsoa polokelong e hole.
Khutlisetsa boitlamo ba ho kopanya PR Tlhahlobo ea mehato Π² master.
Phatlalatsa liphetoho sebakeng sa polokelo se hole.
Ena ke nalane ea polokelo e nang le tumellano ea ho kopanya e khutlisitsoeng
Etsa bonnete ba hore ci.md ha e sa na mongolo "sneaky bug" kamora ho khutlisa boitlamo ba ho kopanya.
Lokisa lenane la mehato ea CI 'me u le khutlisetse ho master
Re khutlisitse ka botlalo boitlamo ba ho kopanya lekala. feature. Litaba tse monate ke hore hona joale ha re na phoso master. Litaba tse mpe ke hore lethathamo la rona la bohlokoa la mehato e tsoelang pele ea ho kopanya le lona le felile. Kahoo, ka nepo, re hloka ho sebelisa tokiso ho li-commits ho tloha feature le ho ba khutlisetsa ho master mmoho le tokiso.
Re ka rarolla bothata ka litsela tse fapaneng:
kgutlisetsa boitlamo bo emollang kopanyo feature Ρ master;
move commits ho tloha ho ea pele feature.
Lihlopheng tse fapaneng tsa nts'etsopele li sebelisa mekhoa e fapaneng tabeng ena, empa re tla fetisetsa boitlamo bo molemo lekaleng le arohaneng le ho theha kopo e arohaneng ea ho hula bakeng sa lekala lena le lecha.
οΈ Mosebetsi
Theha khoele e bitsoang feature-fix ebe o fetohela ho eona.
Tlosa likopo tsohle ho tsoa lekaleng la pele feature ho khoele e ncha. Rarolla likhohlano tse kopaneng tse etsahetseng nakong ea phalliso.
Kenya tlhahlobo ea ho fokotsa maemo ho ci.test.js:
it('does not contain the sneaky bug', () => {
expect( /.*sneakys+bug.*/gi.test(fileContents)).toBe(false);
});
Etsa liteko sebakeng sa heno ho netefatsa hore ha li hlolehe.
Tlosa mongolo "ka phoso e bolotsana" ho ci.md.
Kenya liphetoho tsa liteko le liphetoho tsa lethathamo la mehato ho index ebe u li etsa.
Phatlalatsang lekala sebakeng se hΕle sa polokelo.
Etsa kopo ea ho hula ka sehlooho Ho lokisa tΕ‘obotsi. Kenya feature-fix joalo ka "lekala la hlooho" le master joalo ka "kala ea motheo".
Ka kopo, ema ha liteko li felile. U ka bona boemo ba liteko botlaaseng ba lipuisano tsa PR.
Netefatsa hore o kentse master hae fereko polokelo Joaloka "lekala la motheo", nke ke ka araba likopo tsa liphetoho sebakeng sa polokelo ea thepa.
Amohela kopo ea ho hula "Lokisa tΕ‘obotsi"
Ke leboha tokiso! Ka kopo amohela liphetoho ho master ho tloha kopo ya ho hula.
οΈ Mosebetsi
Tobetsa "Ho kopanya kopo ea ho hula".
Tobetsa "Tiisa ho kopanya".
Tobetsa "Delete lekala" kaha ha re sa e hloka.
Sena ke seo u lokelang ho ba le sona hajoale.
Kea u babatsa!
U phethetse mehato eohle eo batho ba e nkang ka nako e sa khaotseng ea ho kopanya.