Nga ahuatanga angamaheni me te whakauru tonu

Kua ako koe i nga whakahau a Git engari e hiahia ana koe ki te whakaaro me pehea te mahi o te whakauru tonu (CI) i roto i te mooni? Ka hiahia pea koe ki te arotau i o mahi o ia ra? Ma tenei akoranga ka whakawhiwhia koe ki nga pukenga mahi ki te whakauru tonu ma te whakamahi i te putunga putunga GitHub. Ko tenei akoranga ehara i te mea he ruānuku ka taea e koe te paato noa; engari, ka mahia e koe nga mahi e mahia ana e te tangata i te mahi, i te huarahi ano e mahia ana e ratou. Ka whakamāramahia e au te ariā i a koe e haere ana i roto i nga hikoinga.

Ka aha tatou?

I a tatou e anga whakamua ana, ka ata hangahia e tatou he rarangi o nga mahi CI angamaheni, he huarahi pai ki te mahara ki tenei rarangi. I etahi atu kupu, ka hangaia e matou he rarangi o nga mahi ka mahia e nga kaihanga i te wa e mahi ana i te whakauru tonu, e mahi ana i te whakauru tonu. Ka whakamahia ano e matou he huinga whakamatautau ngawari ki te whakatata atu i to maatau mahi CI ki te mea pono.

Ko tenei GIF e whakaatu ana i nga mahi i roto i to putunga i a koe e ahu whakamua ana i te akoranga. Ka taea e koe te kite, kaore he mea uaua i konei me nga mea e tika ana.

Nga ahuatanga angamaheni me te whakauru tonu

Ka haere koe i roto i nga ahuatanga CI paerewa e whai ake nei:

  • Mahi i runga i tetahi waahanga;
  • Te tono o nga whakamatautau aunoa hei whakarite i te kounga;
  • Te whakatinanatanga o te mahi matua;
  • Whakatau papā ina hanumi manga (hanumi papā);
  • Ka puta he hapa i roto i te taiao whakaputa.

He aha ka ako koe?

Ka taea e koe te whakautu i nga patai e whai ake nei:

  • He aha te whakauru tonu (CI)?
  • He aha nga momo whakamatautau aunoa e whakamahia ana i roto i te CI, me te whakautu he aha nga mahi ka puta?
  • He aha nga tono kume me te wa e hiahiatia ana?
  • He aha te Whakawhanaketanga Whakamaatau (TDD) me pehea te hono ki te CI?
  • Me hanumi, me whakatu ano ranei nga huringa?
  • Huri whakamuri, whakatika ranei i te putanga o muri?

I te tuatahi i whakamaoritia e au nga mea penei i te "tono toia" ki nga waahi katoa, engari ko te mutunga ka whakatau ahau ki te whakahoki kupu ki te reo Ingarihi ki etahi waahi hei whakaiti i te tohu o te porangi o te tuhinga. I etahi wa ka whakamahi ahau i te "programmer surzhik" penei i te kupumahi whakamiharo "commit" kei te whakamahia e te tangata i te mahi.

He aha te whakauru tonu?

Te Whakauru Tonu, CI ranei, he mahi hangarau e whakauru ai ia mema o te roopu i a raatau waehere ki roto i te whare putunga noa i te iti rawa i te kotahi i te ra, a me hanga te waehere ka puta me te kore he.

He tautohetohe mo tenei kupu

Ko te take o te tautohetohe ko te auau o te whakauru. Ko etahi e tohe ana ko te whakakotahi i te waehere kotahi anake i te ra kaore e ranea ki te whakauru tonu. Ka hoatu he tauira mo te roopu e tango ana nga tangata katoa i te waehere hou i te ata, ka whakauru i te waa kotahi i te ahiahi. Ahakoa he whakahē tika tenei, e whakaponohia ana ko te whakamaramatanga kotahi ia ra he tino whaitake, he motuhake, he pai hoki mo nga roopu rereke te rahi.

Ko tetahi atu whakahē ko te C ++ ehara i te mea ko te reo anake e whakamahia ana i roto i te whanaketanga, me te tono noa i te huihuinga hapa-kore hei huarahi whakamana he ngoikore. Ko etahi huinga whakamatautau (hei tauira, nga whakamatautau wae i mahia i te takiwa) me tutuki pai. I tenei wa, kei te anga whakamua te hapori ki te whakarite i tenei whakaritenga, aa muri ake nei ka noho noa te "whakamatautau hanga + wae", mena kare ano.

Te Whakauru Tonu rere ke tuku tonu (Te Tukunga Tonu, CD) i te mea kaore e hiahiatia he kaitono tuku i muri i ia huringa whakauru.

Te rarangi o nga hikoinga ka whakamahia e matou puta noa i te akoranga

  1. Toia te waehere hou. Waihanga peka mai master. Tīmatahia te mahi.
  2. Waihangahia nga here ki to peka hou. Hanga me te whakamatautau i te rohe. Paahi? Haere ki te taahiraa e whai ake nei. Rahua? Whakatikahia nga hapa, nga whakamatautau ranei ka ngana ano.
  3. Pana ki to putunga mamao, peka mamao ranei.
  4. Waihangahia he tono toia. Matapakihia nga huringa, taapirihia etahi atu herenga ka haere tonu te korerorero. Tukuna nga whakamatautau ki te peka ahua.
  5. Hanumi/rebase mahi mai i te ariki. Tukuna nga whakamatautau ki te hua hanumi.
  6. Hoatuhia mai i te peka ahua ki te whakaputanga.
  7. Mena he pai nga mea katoa mo te wa roa, hanumi nga huringa ki te rangatira.

Nga ahuatanga angamaheni me te whakauru tonu

️ Whakaritenga

Me mohio kei a koe te rorohiko tika

Hei tango i tenei akoranga ka hiahia koe Node.js и Kiritaki Git.

Ka taea e koe te whakamahi i tetahi kaihoko Git, engari ka tukuna e au nga whakahau mo te raina whakahau.

Me mohio kua whakauruhia he kiritaki Git e tautoko ana i te raina whakahau

Mena kaore ano koe i te kiritaki Git e tautoko ana i te raina whakahau, ka kitea e koe nga tohutohu whakaurunga konei.

Whakapaia te putunga

Me hanga e koe he kape whaiaro (marau) putunga tauira me te waehere mo te akoranga i runga i GitHub. Kia whakaae tatou ki te karanga i tenei kape whaiaro putunga akoranga.

Kua oti? Mena kaore koe i whakarereke i nga tautuhinga taunoa, ka karangahia to putunga akoranga continuous-integration-team-scenarios-students, kei roto i to putea GitHub ka penei te ahua o te URL

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

Ka waea noa ahau ki tenei wahi noho <URL репозитория>.

Taiapa koki rite <тут> ko te tikanga me whakakapi e koe taua korero ki te uara tika.

Me tino mohio Nga mahi a GitHub kua whakauruhia mo tenei putunga akoranga. Ki te kore e taea, whakaaheitia ma te paatene i te paatene nui kei waenganui o te wharangi, ka taea e koe ma te paatene i nga Mahi kei te atanga GitHub.

Kaore e taea e koe te whakaoti i te akoranga e whai ana i aku tohutohu ki te kore e taea nga Mahi a GitHub.

Nga ahuatanga angamaheni me te whakauru tonu

Ka taea e koe te whakamahi i te kaha o GitHub ki te tuku Markdown ki te kite i te ahua o te rarangi e tito nei i konei.

https://github.com/<your GitHub user name>/continuous-integration-team-scenarios-students/blob/master/ci.md

Mo nga whakautu

Ahakoa ko te huarahi pai ki te whakaoti i tenei akoranga ko te mahi i a koe ano, ka raru pea koe.

Mena ka whakaaro koe kaore koe e mohio ki te mahi me te kore e taea te haere tonu, ka taea e koe te titiro ki te miro solution, kei roto i to putunga tiimata.
Tena koa kaua e hanumi solution в master i te wa o te akoranga. Ka taea e koe te whakamahi i tenei peka ki te whakaaro he aha te mahi, ki te whakataurite ranei i to waehere ki te kaituhi, ma te whakamahi i nga kaha katoa ka homai e Git ki a matou. Mena kua ngaro katoa koe, ka taea e koe te whakakapi i to peka master i runga i te peka solution katahi ka tautuhi ano i to raarangi mahi ki te taahiraa akoranga e hiahia ana koe.

Whakamahia tenei anake mena ka tino hiahia koe

Tukuna to waehere

git add .
git commit -m "Backing up my work"

Ko enei whakahau

  • whakaingoa anō master в master-backup;
  • whakaingoa anō solution в master;
  • te utu ki tetahi peka hou master me te tuhi ano i nga ihirangi o te raarangi mahi;
  • Waihangatia he peka "rongoa" mai i te "rangatira" (he "rongoa" i mua) mena ka hiahia koe ki te peka "whakaoti" a muri ake nei.

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

I muri i enei mahi ka taea e koe te whakamahi git log master kia mohio ai koe ko tehea mahi e hiahia ana koe.
Ka taea e koe te tautuhi i to whaiaronga mahi ki tenei mahi penei:

git reset --hard <the SHA you need>

Mena kei te harikoa koe ki te hua, i etahi wa ka hiahia koe ki te whakaputa i to putanga o te putunga ki tetahi putunga mamao. Kaua e wareware ki te whakawhāiti i te peka mamao ina mahi koe i tenei.

git push --force origin master

Kia mahara ka whakamahia e matou git push --force. Kaore pea koe e hiahia ki te mahi i tenei mahi i nga wa katoa, engari he ahuatanga motuhake ta matou ki konei me tetahi kaiwhakamahi putunga, hei taapiri, e mohio ana ki tana mahi.

Ka timata te mahi

Nga ahuatanga angamaheni me te whakauru tonu

Me timata taatau ki te whakahiato i ta maatau rarangi o nga hikoinga CI. Ko te tikanga ka timata koe i tenei mahi ma te tirotiro i te putanga hou o te waehere mai i te putunga mamao, engari karekau he putunga rohe, no reira ka katihia e matou mai i te mea mamao.

️ Mahi: whakahou i te putunga o te rohe, hanga he peka mai master, timata ki te mahi

  1. Korehia te putunga akoranga mai i <URL репозитория>.
  2. Rere npm install i roto i te whaiaronga putunga akoranga; Me whakauru e matou a Jest, ka whakamahia e matou hei whakahaere i nga whakamatautau.
  3. Waihangatia he peka ka whakaingoatia feature. Hurihia ki tenei miro.
  4. Tāpiri waehere whakamātautau ki ci.test.js i waenganui i nga korero e tono ana kia mahia e au tenei.

    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. Tāpirihia he kuputuhi me nga taahiraa tuatahi e 4 ki te konae 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.  

    Ngā rōpū

# Клонируйте репозиторий курса
git clone <repository URL>
cd <repository name>

# Выполните npm install в каталоге репозитория курса; он установит Jest, который мы используем для запуска тестов.
npm install

# Создайте ветку и назовите ее feature. Переключитесь на эту в ветку.
git checkout -b feature

# Отредактируйте ci.test.js как описано выше.
# Отредактируйте ci.md как описано выше

Waihangahia nga here i runga i tetahi peka hou, hanga me te whakamatautau i te rohe

Ka whakarite maatau i nga whakamatautau kia whakahaere i mua i te mahi, katahi ka mahia te waehere.

Ko nga ahuatanga angamaheni ka rere aunoa nga whakamatautau

  • Paetata:
    • Tonu, hei whakautu ranei ki nga huringa waehere e tika ana;
    • I runga i te penapena (mo nga reo whakamaori, JIT-whakahiato ranei);
    • I te wa o te huihuinga (ka hiahiatia te whakahiato);
    • I runga i te tuku;
    • I te wa e whakaputa ana ki tetahi putunga putunga.

  • I runga i te tūmau hanga, i te taiao hanga ranei:
    • Ina whakaputahia te waehere ki tetahi peka / putunga whaiaro.
    • Kei te whakamatautauhia te waehere kei roto i tenei miro.
    • Ko te hua pea o te hanumi ka whakamatauria (te nuinga me te master).
    • Hei waahi whakauru tonu / paipa tuku tonu

Ko te tikanga, ka tere ake te whakahaere o te huinga whakamatautau, ko te nuinga o nga wa ka taea e koe te whakahaere. He penei pea te ahua o te tohatoha atamira.

  • Nga whakamatautau waahanga tere - i te wa e hanga ana, i roto i te paipa CI
  • Nga whakamatautau waeine puhoi, nga waahanga tere me nga whakamatautau whakauru - i runga i te mahi, i roto i te paipa CI
  • Nga waahanga puhoi me nga whakamatautau whakauru - i roto i te paipa CI
  • Te whakamatautau haumarutanga, te whakamatautau uta me etahi atu whakamatautau e pau ana i te wa, utu utu ranei - i roto i nga paipa CI/CD, engari i roto i etahi aratau/waahi/pipeline o te hanga, hei tauira, i te wa e whakarite ana i te kaitono tuku, i te wa e oma ringa ana.

️Tumahi

Ka whakaaro ahau ki te whakahaere i nga whakamatautau i te tuatahi ma te whakamahi i te whakahau npm test. Whai muri i tera, me taapiri he matau git hei whakahaere i a maatau whakamatautau mo te tuku. Kotahi te hopu: Ko nga matau Git kare e kiia he waahanga o te putunga, na reira kaore e taea te kati mai i GitHub me era atu o nga rauemi akoranga. Hei whakauru matau me rere koe install_hook.sh tārua ranei te kōnae repo/hooks/pre-commit ki te whaiaronga rohe .git/hooks/.
Ka u ana koe, ka kite koe kei te whakahaerehia nga whakamatautau ka tirotirohia mena kei te raarangi etahi kupu matua.

  1. Whakahaerehia nga whakamatautau ma te whakahaere i te whakahau npm test i roto i to kōpaki rokiroki akoranga. Manatokohia kua oti nga whakamatautau.
  2. Whakatakotoria he matau commit (pre-commit hook) ma te oma install_hook.sh.
  3. Tukuna o huringa ki to putunga rohe.
  4. Me mohio kei te whakahaerehia nga whakamatautau i mua i te mahi.

Me penei te ahua o to putunga i muri i te whai i enei mahi.
Nga ahuatanga angamaheni me te whakauru tonu

Ngā rōpū

# Установите pre-commit hook выполнив install_hook.sh.  

# Закоммитьте изменения в локальный репозиторий. Используйте "Add first CI steps" в качестве сообщения при коммите.
git add ci.md ci.test.js
git commit -m "Add first CI steps"

# Убедитесь, что тесты запускаются перед коммитом.  

Whakaputahia te waehere ki tetahi putunga mamao, peka mamao ranei

Ka mutu ta raatau mahi i te rohe, ko te nuinga o nga wa ka tukuna e nga kaiwhakawhanake a raatau waehere ki te whanui kia taea ai te whakauru ki te iwi whanui. Ma te GitHub, ka tutuki tenei ma te whakaputa i nga mahi ki tetahi kape whaiaro o te putunga (marau whaiaro) he peka whaiaro ranei.

  • Ma te marau, ka whakakaohia e te kaiwhakawhanake he putunga tiritiri mamao, ka hanga i tetahi kape mamao whaiaro o taua mea, e kiia nei he marau. Kātahi ka whakakaohia tēnei pātaka whaiaro hei mahi tahi me te rohe. Ka oti te mahi, ka mahia nga mahi, ka panaia e ia ki roto i tana marau, ka waatea ki etahi atu ka taea te whakauru ki roto i te putunga noa. Ka whakamahia tenei huarahi ki nga kaupapa puna tuwhera i runga i te GitHub. Ka whakamahia ano i roto i taku akoranga matatau [Team Work and CI with Git] (http://devops.redpill.solutions/).
  • Ko tetahi atu huarahi ko te whakamahi i tetahi putunga mamao anake ka tatauhia te peka anake master putunga tiritahi "tiaki". I tenei ahuatanga, ka whakaputahia e nga kaiwhakawhanake takitahi a raatau waehere ki nga peka o te whare putunga mamao kia taea e etahi atu te titiro ki tenei waehere, mena kei te pai nga mea katoa, hanumi ki master putunga tiritahi.

I tenei akoranga motuhake, ka whakamahia e matou he rerenga mahi e whakamahi ana i nga manga.

Kia whakaputahia ta tatou waehere.

️Tumahi

  • Whakaputa i nga huringa ki tetahi peka mamao he rite te ingoa ki to peka mahi

Ngā rōpū

git push --set-upstream origin feature

Waihangahia he tono toia

Waihangahia he tono kume me te taitara Te arotake i nga taahiraa. Tāuta feature rite "manga upoko" me master rite "manga turanga".

Kia mohio kua whakauruhia e koe master i roto i tona marau te putunga I te mea he "manga turanga", e kore ahau e whakautu ki nga tono whakarereke ki te putunga rauemi akoranga.

I roto i te reo GitHub, ko te "manga turanga" te peka e tau ai to mahi, ko te "manga upoko" te peka kei roto i nga huringa e whakaarohia ana.

Matapakihia nga huringa, taapirihia nga here hou i te wa e haere tonu ana te korerorero

Tono toia(PR)

Tono toia(PR) he huarahi ki te matapaki me te tuhi i te waehere, me te whakahaere i te arotake waehere. Ko nga tono toia ka whakaingoatia ki te huarahi whanui mo te whakauru i nga huringa takitahi ki roto i te waehere whanui. I te nuinga o te wa, ka kapohia e te tangata te whare pupuri mana mamao o te kaupapa, ka mahi i te waehere i te rohe. I muri i tenei, ka tukuna e ia te waehere ki roto i tana putunga mamao me te tono ki te hunga whai mana mo te whare pupuri mana ki te tiki (tohi) tona waehere ki roto i o raatau putunga rohe, ki reira ka arotakehia, ka whakaurua pea(hanumi) tana. Kei te mohiotia ano tenei ariā e etahi atu ingoa, hei tauira, tono hanumi.

Kare koe e tika ki te whakamahi i te ahua tono toia a GitHub me nga papaaho rite. Ka whakamahia pea e nga roopu whanaketanga etahi atu tikanga whakawhitiwhiti korero, tae atu ki te korero kanohi-ki-kanohi, waea reo, imeera ranei, engari he maha tonu nga take hei whakamahi i nga tono kume momo huinga. Anei etahi o ratou:

  • nga korerorero kua whakaritea e pa ana ki nga huringa waehere motuhake;
  • hei waahi ki te tiro i nga urupare e pa ana ki te mahi-a-kaupapa mai i nga kaitoi-aunoa me nga hoa;
  • whakaōkawatanga o arotake waehere;
  • kia mohio ai koe a muri ake nei nga take me nga whakaaro kei muri i tenei waahanga waehere ranei.

Ko te tikanga ka hanga tono toia koe ina hiahia koe ki te matapaki i tetahi mea, ki te tiki urupare ranei. Hei tauira, mena kei te mahi koe i tetahi ahuatanga ka taea te whakatinana i roto i te maha atu i te kotahi ara, ka taea e koe te hanga tono toia i mua i te tuhi i te rarangi tuatahi o te waehere hei whakapuaki i o whakaaro me te matapaki i o mahere me o hoa mahi. Mena he ngawari ake te mahi, ka whakatuwherahia he tono kume ina kua oti te mahi, kua mahia, kua taea te korero. I etahi ahuatanga, ka hiahia pea koe ki te whakatuwhera i tetahi PR mo nga take whakahaere kounga anake: ki te whakahaere i nga whakamatautau aunoa, ki te timata ranei i nga arotake waehere. Ahakoa he aha taau e whakatau, kaua e wareware ki te whakahua i nga tangata e hiahia ana koe ki te whakaae ki to tono toia.

Ko te tikanga, i te wa e hanga ana he PR, ka mahia e koe nga mea e whai ake nei.

  • Tohua he aha e whakaaro ana koe ki te whakarereke me te waahi.
  • Tuhia he whakaahuatanga e whakamarama ana i te kaupapa o nga huringa. Ka hiahia pea koe:
    • tāpirihia he mea nui karekau i te kitea mai i te waehere, he mea whai hua ranei mo te maarama ki te horopaki, penei i nga #bugs e tika ana me nga nama commit;
    • @whakahuatia te tangata e hiahia ana koe ki te timata ki te mahi, ka taea ranei e koe te @whakahua i roto i nga korero a muri ake nei;
    • tono ki nga hoa mahi ki te awhina i tetahi mea, ki te tirotiro ranei i tetahi mea motuhake.

Ina whakatuwherahia e koe te PR, ka mahia nga whakamatautau kua whirihorahia hei whakahaere i enei keehi. I roto i a maatau, he rite tonu nga momo whakamatautau i whakahaerehia e matou i te rohe, engari i roto i te kaupapa tuuturu tera pea etahi atu whakamatautau me nga arowhai.

Tatari koa kia oti nga whakamatautau. Ka taea e koe te kite i te mana o nga whakamatautau kei raro o te korerorero PR i roto i te atanga GitHub. Haere tonu ina oti nga whakamatautau.

️ Taapirihia he tuhipoka mo te matapōkeretanga o te rarangi o nga hikoinga CI

Ko te rarangi e whakamahia ana i roto i tenei akoranga he mea noa me te kaupapa, me taapiri he korero mo tenei.

️ Mahi: hanga he tono toia mo tenei korero

  1. Hurihia ki te peka master.
  2. Waihangatia he peka kua whakaingoatia bugfix.
  3. Tāpiri kupu tuhipoka ki te mutunga o te kōnae 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. Tukuna nga huringa.
  5. Whakaputahia te miro bugfix ki te putunga mamao.
  6. Waihangahia he tono toia kua whakaingoatia Te taapiri korero me te manga upoko bugfix me te peka turangamaster.

Kia mohio kua whakauruhia e koe master i roto i tona marau te putunga I te mea he "manga turanga", e kore ahau e whakautu ki nga tono whakarereke ki te putunga rauemi akoranga.

Koinei te ahua o to putunga.
Nga ahuatanga angamaheni me te whakauru tonu

Ngā rōpū

# Переключитесь на ветку 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 как описано выше

Whakaaetia te tono kume "Tapirihia he korero"

️Tumahi

  1. Waihangahia he tono toia.
  2. Pāwhiritia "Hanumi tono kume".
  3. Pāwhiritia "Whakaū hanumi".
  4. Paatohia te "Mukua te peka", kaore e hiahiatia ana.

He hoahoa tenei o nga mahi i muri i te hanumi.
Nga ahuatanga angamaheni me te whakauru tonu

️ Mahi tonu me te taapiri i nga whakamatautau

Ko te mahi tahi i runga i te tono kume he maha nga wa ka puta he mahi taapiri. I te nuinga o te wa ko te hua tenei o te arotake, o te korerorero ranei, engari i roto i ta maatau akoranga ka whakatauira ma te taapiri i nga mea hou ki ta maatau rarangi o nga hikoinga CI.

Ko te whakauru tonu i te nuinga o te waa ka uru etahi kapinga whakamatautau. He rereke nga whakaritenga whakamaarama whakamatautau ka kitea i roto i tetahi tuhinga e kiia ana he "aratohu takoha". Ka ngawari noa, ka taapirihia he whakamatautau mo ia rarangi i roto i ta maatau rarangi arowhai.

I te wa e whakahaere ana i nga taumahi, ngana ki te mahi i nga whakamatautau i te tuatahi. Mēnā i tāuta tika koe pre-commit i mua, ka whakahaeretia te whakamatautau hou, ka rahua, kaore he mea e mahia. Kia mahara ko tenei ka mohio tatou kei te whakamatautau tonu a maatau whakamatautau i tetahi mea. Ko te mea whakamiharo, mena ka timata taatau ki te tohu i mua i nga whakamatautau, ko te tuku i nga whakamatautau ka taea te tohu i te mahi o te waehere i runga i te tumanako, kaore ranei nga whakamatautau i whakamatau i tetahi mea. I tua atu, mehemea kaore i tuhia e matou nga whakamatautau i te tuatahi, kua wareware tonu matou ki a raatau, i te mea kaore he mea e whakamahara ki a matou.

Whakawhanaketanga Whakamātautau (TDD)

Ka tūtohu a TDD ki te tuhi i nga whakamatautau i mua i te waehere. He penei te ahua o te rerengamahi e whakamahi ana i te TDD.

  1. Tāpirihia he whakamātautau.
  2. Whakahaerehia nga whakamatautau katoa me te whakarite kia rahua te whakamatautau hou.
  3. Tuhia te waehere.
  4. Whakahaerehia nga whakamatautau, kia pai nga whakamatautau katoa.
  5. Whakahokia to waehere.
  6. Whakahokia.

Na te mea ko nga hua o nga whakamatautau ka hinga i te nuinga o te waa ka whakaatuhia ki te whero, a ko nga mea kua paahitia ka whakaatuhia ki te matomato, ka mohiotia ano te huringa he whero-matomato-whakaaro.

️Tumahi

Tuatahi, ngana ki te mahi i nga whakamatautau me te tuku kia taka, katahi ka taapiri me te tuku i nga tuhinga o te rarangi taahiraa CI ake. Ka kite koe kei te haere nga whakamatautau ("matomato").
Na ka whakaputa i te waehere hou ki te putunga mamao me te maataki i nga whakamatautau e whakahaere ana i te atanga GitHub i raro o te korerorero tono toia me te whakahou mana PR.

  1. Hurihia ki te peka feature.
  2. Tāpirihia enei whakamatautau ki ci.test.js i muri i te karanga whakamutunga 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. Ngana ki te mahi i nga whakamatautau. Mehemea pre-commit kua whakauruhia te matau, ka rahua te nganatanga.
  4. Na ka taapirihia tenei kuputuhi ki 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. Hanga me te mahi huringa rohe.
  6. Tukuna nga huringa ki te peka feature.

Me whai koe i tetahi mea penei
Nga ahuatanga angamaheni me te whakauru tonu

Ngā rōpū


# Переключительна ветку 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

Hanumi papā

Haere ki te Huri Tono Te arotake i nga taahiraa.

Ahakoa karekau matou i mahi he, ka paahi nga whakamatautau mo a matou waehere, kaore e taea te whakakotahi i te peka feature и master. Na te mea ko tetahi atu miro bugfix i hanumi ki master i a matou e mahi ana i tenei PR.
Ka puta he ahuatanga kei reira te peka mamao master he putanga hou ake i tera i ahu mai i te peka feature. Na tenei e kore e taea e matou te whakahoki noa i te UPOKO master ki te pito o te miro feature. I tenei ahuatanga, me hanumi, me tono ranei nga here feature rebase master. Ka taea e GitHub te mahi hanumi aunoa mena karekau he taupatupatu. Aue, i roto i to maatau ahuatanga, he whakataetae whakataetae nga peka e rua ki te konae ci.md. Ko tenei ahuatanga e mohiotia ana ko te pakanga hanumi, a me whakatika a ringa.

Hanumi, whakapumau ranei

Hanumi

  • Ka waihangahia he hononga hanumi taapiri me te tiaki i te hitori mahi.
    • Ka pupuri i nga mahi taketake o nga manga me o ratou tohu wa me nga kaituhi.
    • Ka tiakina te SHA o nga mahi me te hono ki a raatau i roto i nga korerorero tono whakarereke.
  • Me taumira papā kotahi te wa.
  • Ko te korero kia kore-rarangi.
    • He uaua te panui na te maha o nga manga (he rite ki te taura IDE).
    • Ka uaua ake te patuiro aunoa, hei tauira. git bisect he iti ake te whaihua - ka kitea noa iho te whakakotahitanga.

Whakahekea

  • Ka mahia nga whakaari mai i te peka o naianei ki runga ake o te peka turanga tetahi ki tetahi.
    • Ka mahia nga mahi hou me nga SHA hou, na te mea ka taurite nga commits i GitHub ki nga tono kume taketake, engari kaua ki nga korero e rite ana.
    • Ka taea te whakakotahi me te whakarereke i nga commit i roto i te tukanga, ka hanumi ranei ki te kotahi.
  • He maha nga raruraru me whakatika.
  • Ka taea e koe te pupuri i tetahi korero ahorangi.
    • He maamaa ake pea te panui i te mea kaore i te roa rawa mo te kore take.
    • He ngawari ake te patuiro me te rapu raruraru: ka taea git bisect, ka taea e te whakamuri aunoa kia marama ake, kia maarama ake.
  • Me whakaputa i te peka kua heke te commit me te haki --force ina whakamahia me nga tono toia.

Ko te tikanga, ka whakaae nga kapa ki te whakamahi i te rautaki kotahi ina hiahia ratou ki te hanumi i nga huringa. He hanumi "parakore" tenei, he mahi "parakore" ranei kei runga, tetahi mea ranei i waenga, penei i te mahi i te tuunga ki runga ma te taunekeneke (git rebase -i) i te rohe mo nga peka karekau i panuitia ki te whare pupuri a te iwi, engari ka hanumi mo nga peka "tumatanui".

I konei ka whakamahia te hanumi.

️Tumahi

  1. Me mohio kei roto te waehere i te peka o te rohe master kua whakahoutia mai i te putunga mamao.
  2. Hurihia ki te peka feature.
  3. Tīmatahia te hanumi me te peka master. He pakanga hanumi na nga huringa whakataetae ki te ci.md.
  4. Whakatauhia te papā kia noho tonu to maatau rarangi o nga hikoinga CI me te tuhipoka mo taua mea ki te tuhinga.
  5. Whakaputahia he whakahiatotanga ki tetahi peka mamao feature.
  6. Tirohia te mana o te tono kume i te GitHub UI ka tatari kia whakatauhia te hanumi.

Ngā rōpū

# Убедитесь, что код в локальное ветке `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, дождитесь пока слияние не будет разрешено.

He mahi pai!

Kua oti koe te rarangi ka hiahia koe ki te whakaae i te tono kume ki roto master.

️ Tūmahi: Whakaaetia te tono kume "Tirohanga mo nga taahiraa"

  1. Tuwhera he tono kume.
  2. Pāwhiritia "Hanumi tono kume".
  3. Pāwhiritia "Whakaū hanumi".
  4. Paatohia te "Mukua te peka" na te mea kaore e hiahiatia ana e matou.

Ko to putunga tenei i tenei wa
Nga ahuatanga angamaheni me te whakauru tonu

Hapa hua

E ai ki te korero "ka taea te whakamahi whakamatautau ki te whakaatu i te aroaro o nga hapa, engari kaua rawa e whakaatu i te ngaro." Ahakoa i whakamatauhia e matou, kaore i kitea he he, ka uru mai tetahi pepeke nanakia ki te mahi.

I roto i te ahuatanga penei, me tiaki tatou:

  • he aha te mea ka tukuna ki te hanga;
  • waehere i roto i te miro master me te hapa, ka taea e nga kaihanga te timata i nga mahi hou.

Me huri whakamuri, whakatika ranei i te putanga o muri?

Ko te huri whakamuri te tikanga o te tuku i tetahi putanga pai o mua ki te whakaputa me te whakahoki i nga mahi kei roto te hapa. "Whakatika whakamua" ko te taapiri o te whakatika ki te master me te tuku wawe i te putanga hou. Na te mea ka huri nga API me nga kaupapa papaa raraunga i te wa e tukuna ana te waehere ki te whakaputanga, me te tuku tonu me te pai o te kapinga whakamatautau, ko te hoki whakamuri he uaua ake, he morearea atu i te whakatika i te putanga o muri.

I te mea karekau he tupono ki te hoki whakamuri, ka haere matou i tenei huarahi, na te mea ka taea e matou

  • whakatika wawe te hapa i runga i te hua;
  • hanga waehere ki roto master e tika ana mo te timata i tetahi mahi hou.

️Tumahi

  1. Hurihia ki te peka master rohe.
  2. Whakahoutia te putunga paetata mai i te putunga mamao.
  3. Whakahokia te mahi hanumi PR Te arotake i nga taahiraa в master.
  4. Whakaputa i nga huringa ki te putunga mamao.

Koinei te hitori o te putunga kua whakahokia mai te commit hanumi
Nga ahuatanga angamaheni me te whakauru tonu

Ngā rōpū

# Переключитесь на ветку master.
git checkout master

# Обновите локальный репозиторий из удалённого репозитория.
git pull

# Отмените коммит слияния PR Steps review в master.
# Мы отменяем коммит слияния, поэтому нам нужно выбрать ветку истории, которую мы захотим оставить
git show HEAD

# предположим, что коммит, который был последним в ветке master до слияния, был отображён предыдущей командой первым
git revert HEAD -m 1
# можете не менять сообщения коммитов

# Опубликуйте изменения в удалённый репозиторий
git push

️ Whakamātautau whaiaro

Tirohia mēnā ci.md kua kore e mau te kupu "tumuna" i muri i te whakahokinga o te mahi hanumi.

Whakatikahia te rarangi o nga taahiraa CI ka whakahokia ki te rangatira

Kua whakahokia katoatia e matou te whakakotahitanga o te peka. feature. Ko te rongo pai ko te mea kaore he hapa o taatau inaianei master. Ko te korero kino ko ta matou rarangi utu nui o nga mahi whakauru tonu kua ngaro ano. Na, ko te tikanga, me tono taatau ki te whakatika ki nga commits mai feature ka whakahokia ki a ratou master me te whakatika.

Ka taea e tatou te whakatau i te raruraru i roto i nga huarahi rereke:

  • Whakahokia he mahi ka wete i te hanumi feature с master;
  • te nekehanga mai i te wa o mua feature.

He rereke nga huarahi e whakamahia ana e nga roopu whanaketanga rereke i tenei keehi, engari ka nekehia e matou nga here whaihua ki tetahi peka motuhake ka hanga tono toia motuhake mo tenei peka hou.

️Tumahi

  1. Waihangahia he miro e kiia ana feature-fix ka huri ki reira.
  2. Hurihia nga mahi katoa mai i te peka o mua feature ki te miro hou. Whakaoti papā hanumi i puta i te wā o te hekenga.

    Nga ahuatanga angamaheni me te whakauru tonu

  3. Tāpirihia he whakamātautau whakamuri ki ci.test.js:

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

  4. Whakahaerehia nga whakamatautau i te rohe kia kore ai e taka.
  5. Tango i te kupu "me te bug sneaky" ki roto ci.md.
  6. Tāpirihia ngā huringa whakamātautau me ngā huringa rārangi takahanga ki te taupū ka mahia.
  7. Whakaputaina te peka ki te putunga mamao.

Me mutu koe ki tetahi mea penei:
Nga ahuatanga angamaheni me te whakauru tonu

Ngā rōpū

# Создайте ветку под названием 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

Waihangahia he tono toia.

Waihangahia he tono kume me te taitara Te whakatika i te ahuatanga. Tāuta feature-fix rite "manga upoko" me master rite "manga turanga".
Tatari koa kia oti nga whakamatautau. Ka taea e koe te kite i te mana o nga whakamatautau kei raro o te korerorero PR.

Kia mohio kua whakauruhia e koe master i roto i tona marau te putunga I te mea he "manga turanga", e kore ahau e whakautu ki nga tono whakarereke ki te putunga rauemi akoranga.

Whakaaetia te tono kume "Whakatika i te waahanga"

Nga mihi mo te whakatikatika! Whakaaetia nga huringa ki master mai to tono tono.

️Tumahi

  1. Pāwhiritia "Hanumi tono kume".
  2. Pāwhiritia "Whakaū hanumi".
  3. Paatohia te "Mukua te peka" na te mea kaore e hiahiatia ana e matou.

Koinei te mea me whai koe i tenei wa.
Nga ahuatanga angamaheni me te whakauru tonu

Kia ora!

Kua oti i a koe nga mahi katoa e mahia ana e te tangata i te wa o te whakauru tonu.

Mena ka kite koe i etahi raru o te akoranga, kei te mohio ranei koe ki te whakapai ake, me hanga he take ki roto whare putunga me nga rauemi akoranga. Kei tenei akoranga ano putanga tauwhitiwhiti te whakamahi i te GitHub Learning Lab hei turanga.

Source: will.com

Tāpiri i te kōrero