Suidheachaidhean àbhaisteach le amalachadh leantainneach

A bheil thu air òrdughan Git ionnsachadh ach a bheil thu airson smaoineachadh air mar a tha amalachadh leantainneach (CI) ag obair ann an da-rìribh? No is dòcha gu bheil thu airson na gnìomhan làitheil agad a mheudachadh? Bheir an cùrsa seo sgilean practaigeach dhut ann an amalachadh leantainneach a’ cleachdadh stòr GitHub. Chan eil an cùrsa seo an dùil a bhith na dhraoidh as urrainn dhut dìreach cliogadh troimhe; air an làimh eile, nì thu na h-aon ghnìomhan a bhios daoine a ’dèanamh aig an obair, san aon dòigh sa bhios iad ga dhèanamh. Mìnichidh mi an teòiridh mar a thèid thu tro na ceumannan a tha na lùib.

Dè nì sinn?

Mar a thèid sinn air adhart, mean air mhean cruthaichidh sinn liosta de cheumannan àbhaisteach CI, a tha na dhòigh math air an liosta seo a chuimhneachadh. Ann am faclan eile, cruthaichidh sinn liosta de ghnìomhan a nì luchd-leasachaidh fhad ‘s a bhios iad a’ dèanamh amalachadh leantainneach, a ’dèanamh amalachadh leantainneach. Cleachdaidh sinn cuideachd seata deuchainnean sìmplidh gus ar pròiseas CI a thoirt nas fhaisge air an fhìor fhear.

Tha an GIF seo gu sgeamach a’ sealltainn na geallaidhean san stòr-tasgaidh agad mar a thèid thu air adhart tron ​​chùrsa. Mar a chì thu, chan eil dad iom-fhillte an seo agus dìreach an fheadhainn as riatanach.

Suidheachaidhean àbhaisteach le amalachadh leantainneach

Thèid thu tro na suidheachaidhean àbhaisteach CI a leanas:

  • Obraich air feart;
  • Cur an gnìomh deuchainnean fèin-ghluasadach gus dèanamh cinnteach à càileachd;
  • Cur an gnìomh na h-obrach prìomhachais;
  • Fuasgladh còmhstri nuair a thèid meuran a chur còmhla (còmhstri còmhla);
  • Tha mearachd a’ tachairt ann an àrainneachd cinneasachaidh.

Dè a dh'ionnsaicheas tu?

Bidh e comasach dhut na ceistean a leanas a fhreagairt:

  • Dè a th’ ann an amalachadh leantainneach (CI)?
  • Dè an seòrsa de dheuchainnean fèin-ghluasadach a thathas a’ cleachdadh ann an CI, agus mar fhreagairt air na gnìomhan a tha iad air am brosnachadh?
  • Dè a th’ ann an iarrtasan tarraing agus cuin a tha feum orra?
  • Dè a th’ ann an Leasachadh air a stiùireadh le Deuchainn (TDD) agus ciamar a tha e ceangailte ri CI?
  • Am bu chòir dhomh na h-atharrachaidhean a chur còmhla no ath-shuidheachadh?
  • Roll air ais no càradh san ath dhreach?

An toiseach dh’eadar-theangaich mi rudan mar “pull requests” anns a h-uile àite, ach mar thoradh air an sin chuir mi romham abairtean sa Bheurla a thilleadh ann an cuid de dh’àiteachan gus an ìre de chuthach san teacsa a lughdachadh. Bidh mi uaireannan a’ cleachdadh “programmer surzhik” mar an gnìomhair sgoinneil “commit” far am bi daoine ga chleachdadh aig an obair.

Dè a th’ ann an amalachadh leantainneach?

Amalachadh leantainneach, no CI, na chleachdadh teignigeach anns am bi gach ball den sgioba a’ fighe a-steach an còd aca ann an stòr coitcheann co-dhiù aon turas san latha, agus feumaidh an còd a thig às a bhith air a thogail co-dhiù gun mhearachdan.

Tha eas-aonta ann mun teirm seo

Is e am puing connspaid cho tric sa tha amalachadh. Tha cuid a’ cumail a-mach nach eil e gu leòr còd aonachaidh a-mhàin aon uair san latha airson amalachadh leantainneach. Tha eisimpleir air a thoirt seachad de sgioba far am bi a h-uile duine a’ gabhail còd ùr sa mhadainn agus ga cheangal uair san fheasgar. Ged is e gearan reusanta a tha seo, sa chumantas thathas a’ creidsinn gu bheil am mìneachadh aon-latha gu reusanta practaigeach, sònraichte, agus freagarrach airson sgiobaidhean de dhiofar mheudan.

Is e gearan eile nach e C++ an aon chànan a thathas a’ cleachdadh ann an leasachadh a-nis, agus gu bheil e dìreach a’ cur feum air co-chruinneachadh gun mhearachd mar dhòigh dearbhaidh. Feumaidh cuid de sheata de dheuchainnean (mar eisimpleir, deuchainnean aonad air an coileanadh gu h-ionadail) a bhith air an crìochnachadh gu soirbheachail cuideachd. Aig an àm seo, tha a’ choimhearsnachd a’ gluasad a dh’ionnsaigh seo a dhèanamh na riatanas, agus san àm ri teachd is dòcha gum bi “deuchainnean togail + aonad” gu bhith nan cleachdadh cumanta, mura h-eil e mar-thà.

Amalachadh leantainneach eadar-dhealaichte bho solar leantainneach (Lìbhrigeadh Leantainneach, CD) leis nach eil feum air tagraiche fuasglaidh às deidh gach cearcall amalachaidh.

Liosta de na ceumannan a chleachdas sinn tron ​​​​chùrsa

  1. Luchdaich a-nuas an còd as ùire. Cruthaich meur bho master. Tòisich ag obair.
  2. Cruthaich geallaidhean air a’ mheur ùr agad. Tog agus deuchainn gu h-ionadail. Gabh seachad? Rach don ath cheum. Fàillig? Ceartaich mearachdan no deuchainnean agus feuch a-rithist.
  3. Brùth chun ionad-tasgaidh iomallach no meur iomallach agad.
  4. Cruthaich iarrtas tarraing. Bruidhinn mu na h-atharrachaidhean, cuir barrachd gheallaidhean ris mar a bhios an deasbad a’ leantainn. Dèan deuchainnean a 'dol seachad air a' mheur feart.
  5. Thig còmhla / ath-shuidheachadh geallaidhean bhon mhaighstir. Thoir air deuchainnean a dhol seachad air toradh an aonaidh.
  6. Cleachd bhon mheur feart gu cinneasachadh.
  7. Ma tha a h-uile dad math ann an cinneasachadh airson ùine, cuir atharrachaidhean còmhla ri maighstir.

Suidheachaidhean àbhaisteach le amalachadh leantainneach

️ Ag ullachadh

Dèan cinnteach gu bheil am bathar-bog ceart agad

Gus an cùrsa seo a ghabhail feumaidh tu Node.js и Git neach-dèiligidh.

Faodaidh tu cleachdaiche Git sam bith a chleachdadh, ach cha toir mi seachad ach òrdughan airson an loidhne-àithne.

Dèan cinnteach gu bheil cleachdaiche Git agad air a chuir a-steach a bheir taic don loidhne-àithne

Mura h-eil cleachdaiche Git agad fhathast a bheir taic don loidhne-àithne, gheibh thu stiùireadh stàlaidh an seo.

Ullaich an stòr

Feumaidh tu leth-bhreac pearsanta a chruthachadh (forc) teamplaid stòr-dàta le còd airson a’ chùrsa air GitHub. Aontaichidh sinn an lethbhreac pearsanta seo a ghairm stòr cùrsa.

Dèanta? Mura h-atharraich thu na roghainnean bunaiteach, tha e glè choltach gur e stòr a’ chùrsa agad a chanar ris continuous-integration-team-scenarios-students, tha e suidhichte anns a 'chunntas GitHub agad agus tha coltas mar seo air an URL

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

Canaidh mi an seòladh seo gu sìmplidh <URL репозитория>.

Is toil le camagan ceàrn <тут> a’ ciallachadh gum feum thu an luach iomchaidh a chur an àite abairt mar sin.

Dèan cinnteach sin Gnìomhan GitHub air a ghabhail a-steach don stòr cùrsa seo. Mura h-eil iad air an comasachadh, feuch an cuir thu an comas iad le bhith a’ briogadh air a’ phutan mòr ann am meadhan na duilleige, a gheibh thu le bhith a’ briogadh Gnìomhan anns an eadar-aghaidh GitHub.

Cha bhith e comasach dhut an cùrsa a chrìochnachadh a’ leantainn an stiùiridh agam mura h-eil GitHub Actions air a chomasachadh.

Suidheachaidhean àbhaisteach le amalachadh leantainneach

Faodaidh tu an-còmhnaidh comas GitHub a chleachdadh gus Markdown a thoirt seachad gus faicinn suidheachadh làithreach an liosta a tha sinn a’ sgrìobhadh an seo

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

Mu na freagairtean

Ged is e an dòigh as fheàrr air a’ chùrsa seo a chrìochnachadh a dhèanamh leat fhèin, is dòcha gum bi cuid de dhuilgheadasan agad.

Ma tha thu a’ faireachdainn nach eil thu a’ tuigsinn dè a nì thu agus nach urrainn dhut leantainn air adhart, faodaidh tu coimhead a-steach don t-snàthainn solution, a tha anns an ionad tòiseachaidh agad.
Feuch nach coinnich thu solution в master rè a' chùrsa. Faodaidh tu am meur seo a chleachdadh gus faighinn a-mach dè a nì thu, no coimeas a dhèanamh eadar do chòd agus còd an ùghdair, a’ cleachdadh a h-uile comas a bheir Git dhuinn. Ma tha thu air chall gu tur, faodaidh tu do mheur a chuir na àite gu tur master air meur solution agus an uairsin ath-shuidhich an eòlaire obrach agad chun cheum cùrsa a dh’ fheumas tu.

Na cleachd seo ach ma tha feum agad air

Geall do chòd

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

Na h-òrduighean so

  • ath-ainmich master в master-backup;
  • ath-ainmich solution в master;
  • checkout gu meur ùr master agus ath-sgrìobhadh susbaint an eòlaire obrach;
  • Cruthaich meur "fuasgladh" bho "mhaighstir" (a b 'àbhaist a bhith "fuasgladh") air eagal' s gum feum thu meur "fuasgladh" san àm ri teachd.

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

Às deidh na ceumannan seo faodaidh tu a chleachdadh git log master gus faighinn a-mach dè an gealladh a tha a dhìth ort.
'S urrainn dhut an eòlaire obrach agad ath-shuidheachadh don ghealladh seo mar seo:

git reset --hard <the SHA you need>

Ma tha thu toilichte leis a’ bhuil, feumaidh tu aig àm air choreigin an dreach agad den stòr-tasgaidh fhoillseachadh gu ionad-tasgaidh iomallach. Na dì-chuimhnich am meur iomallach a shònrachadh gu soilleir nuair a nì thu seo.

git push --force origin master

Thoir an aire gu bheil sinn a 'cleachdadh git push --force. Chan eil e coltach gum bi thu airson seo a dhèanamh glè thric, ach tha suidheachadh gu math sònraichte againn an seo le aon neach-cleachdaidh tasgaidh a tha, a bharrachd air sin, a 'tuigsinn dè a tha e a' dèanamh.

A 'tòiseachadh ag obair

Suidheachaidhean àbhaisteach le amalachadh leantainneach

Feuch an tòisich sinn a’ cur ri chèile ar liosta de cheumannan CI. Mar as trice thòisicheadh ​​​​tu air a’ cheum seo le bhith a’ toirt sùil air an tionndadh as ùire den chòd bhon ionad-tasgaidh iomallach, ach chan eil stòr ionadail againn fhathast, agus mar sin bidh sinn ga ghleusadh bhon fhear iomallach na àite.

️ Gnìomh: ùraich an stòr ionadail, cruthaich meur bho master, tòisich ag obair

  1. Clone stòr a’ chùrsa bho <URL репозитория>.
  2. Ruith npm install ann an eòlaire stòr a’ chùrsa; Feumaidh sinn e gus Jest a chuir a-steach, a bhios sinn a’ cleachdadh airson deuchainnean a ruith.
  3. Cruthaich meur agus ainmich e feature. Tionndaidh chun t-snàthainn seo.
  4. Cuir còd deuchainn ris ci.test.js eadar beachdan ag iarraidh orm seo a dhèanamh.

    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. Cuir teacsa leis a’ chiad 4 ceumannan ris an fhaidhle 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.  

    Sgioban

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

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

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

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

Cruthaich geallaidhean air meur ùr, tog agus deuchainn gu h-ionadail

Tha sinn a’ dol a stèidheachadh na deuchainnean airson ruith mus dèan sinn gealltanas, agus an uairsin an còd a ghealltainn.

Suidheachaidhean àbhaisteach nuair a ruitheas deuchainnean gu fèin-ghluasadach

  • Gu h-ionadail:
    • Gu leantainneach no mar fhreagairt air atharrachaidhean còd iomchaidh;
    • Nuair a thèid a shàbhaladh (airson cànanan eadar-mhìneachaidh no cànain a chaidh a chur ri chèile le JIT);
    • rè co-chruinneachadh (nuair a tha feum air cruinneachadh);
    • Air tiomnadh ;
    • Nuair a thèid fhoillseachadh gu stòr co-roinnte.

  • Air an fhrithealaiche togail no an àrainneachd togail:
    • Nuair a thèid còd fhoillseachadh gu meur / stòr-dàta pearsanta.
    • Thathas a’ dèanamh deuchainn air a’ chòd san t-snàthainn seo.
    • Thathas a’ dèanamh deuchainn air toradh a dh’ fhaodadh a bhith aig an aonachadh (mar as trice le master).
    • Mar ìre amalachaidh leantainneach / loidhne-phìoban lìbhrigidh leantainneach

Mar as trice, mar as luaithe a ruitheas sreath deuchainn, is ann as trice as urrainn dhut a ruith. Is dòcha gum bi cuairteachadh ìre àbhaisteach coltach ri seo.

  • Deuchainnean aonad luath - rè togail, ann an loidhne-phìoban CI
  • Deuchainnean aonad slaodach, co-phàirt luath agus deuchainnean amalachaidh - air gealltanas, ann an loidhne-phìoban CI
  • Co-phàirt slaodach agus deuchainnean amalachaidh - ann an loidhne-phìoban CI
  • Deuchainn tèarainteachd, deuchainn luchdan agus deuchainnean eile a bheir ùine no daor - ann am pìoban CI / CD, ach dìreach ann am modhan / ìrean / pìoban sònraichte den togail, mar eisimpleir, nuair a bhios tu ag ullachadh tagraiche fuasglaidh no nuair a bhios e a’ ruith le làimh.

️Tasg

Tha mi a’ moladh na deuchainnean a ruith le làimh an toiseach a’ cleachdadh an àithne npm test. Às deidh sin, leig dhuinn dubhan git a chuir ris gus na deuchainnean againn air gealltanas a ruith. Tha aon ghlacadh ann: chan eilear a’ beachdachadh air dubhan Git mar phàirt den stòr-tasgaidh agus mar sin chan urrainnear an clonadh bho GitHub còmhla ris a’ chòrr de stuthan a’ chùrsa. Gus dubhan a stàladh feumaidh tu ruith install_hook.sh no dèan lethbhreac dhen fhaidhle repo/hooks/pre-commit dhan eòlaire ionadail .git/hooks/.
Nuair a nì thu gealltanas, chì thu gu bheil deuchainnean gan ruith agus nì iad sgrùdadh feuch a bheil prìomh fhaclan sònraichte an làthair air an liosta.

  1. Ruith na deuchainnean le làimh le bhith a’ ruith an àithne npm test ann am pasgan stòr a’ chùrsa agad. Dèan cinnteach gu bheil na deuchainnean crìochnaichte.
  2. Suidhich dubhan gealltanas (dubhan ro-gheallaidh) le bhith a 'ruith install_hook.sh.
  3. Dèan na h-atharraichean agad don ionad-tasgaidh ionadail agad.
  4. Dèan cinnteach gu bheil deuchainnean air an ruith mus dèan thu sin.

Bu chòir don stòr agad coimhead mar seo às deidh dhut na ceumannan seo a leantainn.
Suidheachaidhean àbhaisteach le amalachadh leantainneach

Sgioban

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

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

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

Foillsich còd gu ionad-tasgaidh iomallach no meur iomallach

Aon uair ‘s gu bheil iad deiseil ag obair gu h-ionadail, mar as trice bidh luchd-leasachaidh a’ toirt a ’chòd aca gu poblach gus an gabh e amalachadh leis a’ phoball mu dheireadh. Le GitHub, mar as trice thèid seo a choileanadh le bhith a’ foillseachadh na h-obrach gu leth-bhreac pearsanta den stòr (forc pearsanta) no gu meur pearsanta.

  • Le forcaichean, bidh leasaiche a’ clonadh ionad-tasgaidh co-roinnte iomallach, a’ cruthachadh leth-bhreac pearsanta iomallach dheth, ris an canar cuideachd forc. Bidh e an uairsin a’ clonadh an stòr pearsanta seo gus obrachadh leis gu h-ionadail. Nuair a bhios an obair deiseil agus na geallaidhean air an dèanamh, bidh e gam putadh a-steach don phoc aige, far am bi iad rim faighinn le daoine eile agus far am faodar am filleadh a-steach don stòr chumanta. Tha an dòigh-obrach seo air a chleachdadh gu cumanta ann am pròiseactan le còd fosgailte air GitHub. Tha e cuideachd air a chleachdadh anns a’ chùrsa adhartach agam [Obair-sgioba agus CI le Git] (http://devops.redpill.solutions/).
  • Is e dòigh eile a bhith a 'cleachdadh ach aon ionad-tasgaidh iomallach agus a' cunntadh a 'mheur a-mhàin master ionad-tasgaidh co-roinnte "dìonach". Anns an t-suidheachadh seo, bidh luchd-leasachaidh fa leth a’ foillseachadh a’ chòd aca gu meuran de stòras iomallach gus an urrainn do dhaoine eile coimhead air a’ chòd seo, ma tha a h-uile càil ann an òrdugh, cuir còmhla e le master ionad-tasgaidh co-roinnte.

Anns a 'chùrsa shònraichte seo, bidh sinn a' cleachdadh sruth-obrach a bhios a 'cleachdadh mheuran.

Foillsichidh sinn ar còd.

️Tasg

  • Foillsich atharraichean gu meur iomallach leis an aon ainm ris a’ mheur obrach agad

Sgioban

git push --set-upstream origin feature

Cruthaich iarrtas tarraing

Cruthaich iarrtas tarraing le tiotal Lèirmheas ceumannan... Stàlaich feature mar "head meur" agus master mar "bonn meur".

Dèan cinnteach gu bheil thu air a stàladh master anns a chuid forc an tasgaidh Mar "mheur bunaiteach", cha fhreagair mi iarrtasan airson atharrachaidhean air stòras stuthan cùrsa.

Ann an GitHub lingo, is e am "meur bunaiteach" am meur air a bheil thu a 'stèidheachadh do chuid obrach, agus is e am "meur ceann" am meur anns a bheil na h-atharrachaidhean a thathar a' moladh.

Bruidhinn mu na h-atharrachaidhean, cuir geallaidhean ùra ris mar a bhios an deasbad a’ leantainn

Iarrtas tarraing (PR)

Iarrtas tarraing (PR) na dhòigh air còd a dheasbad agus a chlàradh, a bharrachd air ath-sgrùdadh còd a dhèanamh. Tha iarrtasan tarraing air an ainmeachadh às deidh an dòigh choitcheann airson atharrachaidhean fa leth a thoirt a-steach don chòd iomlan. Mar as trice, bidh neach a 'clonadh stòr oifigeil iomallach a' phròiseict agus ag obair air a 'chòd gu h-ionadail. Às deidh seo, bidh e a’ cur a ’chòd anns an ionad-tasgaidh iomallach pearsanta aige agus ag iarraidh air an fheadhainn le uallach airson an stòr oifigeil a thogail (tarraing) a chòd a-steach do na stòran ionadail aca, far am bi iad ag ath-sgrùdadh agus is dòcha ag amalachadh (choimeasgadh) aige. Tha ainmean eile air a’ bhun-bheachd seo cuideachd, mar eisimpleir, iarrtas co-aonaidh.

Chan fheum thu am feart iarrtas tarraing de GitHub no àrd-ùrlaran coltach ris a chleachdadh. Faodaidh sgiobaidhean leasachaidh dòighean conaltraidh eile a chleachdadh, a’ gabhail a-steach conaltradh aghaidh-ri-aghaidh, fiosan gutha, no post-d, ach tha grunn adhbharan ann fhathast airson iarrtasan tarraing stoidhle fòraim a chleachdadh. Seo cuid dhiubh:

  • còmhraidhean eagraichte co-cheangailte ri atharrachaidhean còd sònraichte;
  • mar àite airson fios air ais fhaicinn air obair a’ dol air adhart bho gach cuid fèin-dhearbhadairean agus co-aoisean;
  • foirmeil de lèirmheasan còd;
  • gus an lorg thu nas fhaide air adhart na h-adhbharan agus na beachdachaidhean air cùl seo no am pìos còd sin.

Mar as trice bidh thu a’ cruthachadh iarrtas tarraing nuair a dh’ fheumas tu bruidhinn mu rudeigin no fios air ais fhaighinn. Mar eisimpleir, ma tha thu ag obair air feart a dh’ fhaodadh a bhith air a bhuileachadh ann am barrachd air aon dòigh, faodaidh tu iarrtas tarraing a chruthachadh mus sgrìobh thu a’ chiad loidhne de chòd gus do bheachdan a cho-roinn agus bruidhinn mu na planaichean agad le do cho-obraichean. Ma tha an obair nas sìmplidh, thèid iarrtas tarraing fhosgladh nuair a tha rudeigin air a dhèanamh mu thràth, air a ghealltainn, agus faodar a dheasbad. Ann an cuid de shuidheachaidhean, is dòcha gum bi thu airson PR fhosgladh a-mhàin airson adhbharan smachd càileachd: gus deuchainnean fèin-ghluasadach a ruith no lèirmheasan còd a thòiseachadh. Ge bith dè a cho-dhùnas tu, na dìochuimhnich @ thoir iomradh air na daoine aig a bheil an cead a tha thu ag iarraidh san iarrtas tarraing agad.

Mar as trice, nuair a chruthaicheas tu PR, nì thu na leanas.

  • Sònraich na tha thu am beachd atharrachadh agus càite.
  • Sgrìobh tuairisgeul a’ mìneachadh adhbhar nan atharrachaidhean. Is dòcha gu bheil thu ag iarraidh:
    • cuir rud sam bith cudromach ris nach eil follaiseach bhon chòd, no rudeigin a tha feumail airson an co-theacsa a thuigsinn, leithid #bugs iomchaidh agus geall àireamhan;
    • @ thoir iomradh air duine sam bith a tha thu airson tòiseachadh ag obair leotha, no faodaidh tu @ iomradh a thoirt orra anns na beachdan nas fhaide air adhart;
    • iarr air co-obraichean cuideachadh le rudeigin no sùil a thoirt air rudeigin sònraichte.

Cho luath ‘s a dh’ fhosglas tu am PR, thèid na deuchainnean a chaidh an rèiteachadh airson ruith ann an leithid de chùisean a chuir gu bàs. Anns a 'chùis againn, is e seo an aon sheata de dheuchainnean a ruith sinn gu h-ionadail, ach ann am fìor phròiseact is dòcha gum bi deuchainnean agus sgrùdaidhean a bharrachd ann.

Feuch an fuirich thu fhad ‘s a bhios na deuchainnean deiseil. Chì thu inbhe nan deuchainnean aig bonn an deasbaid PR ann an eadar-aghaidh GitHub. Lean air adhart nuair a bhios na deuchainnean deiseil.

️ Cuir nota ris mu dheidhinn air thuaiream liosta nan ceumannan CI

Tha an liosta a thathar a’ cleachdadh sa chùrsa seo neo-riaghailteach agus pearsanta, bu chòir dhuinn nota a chuir ris mu dheidhinn seo.

️ Gnìomh: cruthaich iarrtas tarraing airson a’ bheachd seo

  1. Tionndaidh gu meur master.
  2. Cruthaich meur ainmichte bugfix.
  3. Cuir teacsa nota gu deireadh an fhaidhle 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. Geall air na h-atharrachaidhean.
  5. Foillsich an snàthainn bugfix gu ionad-tasgaidh iomallach.
  6. Cruthaich iarrtas tarraing ainmichte A 'cur ris a' bheachd le meur cinn bugfix agus am meur bunaiteachmaster.

Dèan cinnteach gu bheil thu air a stàladh master anns a chuid forc an tasgaidh Mar "mheur bunaiteach", cha fhreagair mi iarrtasan airson atharrachaidhean air stòras stuthan cùrsa.

Seo mar a bu chòir don stòr agad a bhith coltach.
Suidheachaidhean àbhaisteach le amalachadh leantainneach

Sgioban

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

Ceadaich iarrtas tarraing "A' cur beachd ris"

️Tasg

  1. Cruthaich iarrtas tarraing.
  2. Briog air "Cuir còmhla iarrtas tarraing".
  3. Briog air "Dearbhaich co-aonadh".
  4. Briog air “Sguab às meur”, chan eil feum againn air tuilleadh.

Is e seo diagram de gheallaidhean às deidh aonachadh.
Suidheachaidhean àbhaisteach le amalachadh leantainneach

️ Cùm ag obair agus cuir deuchainnean ris

Bidh co-obrachadh air iarrtas tarraing gu tric a’ leantainn gu obair a bharrachd. Mar as trice bidh seo mar thoradh air ath-sgrùdadh còd no deasbaireachd, ach anns a’ chùrsa againn tha sinn a’ dol a mhodail seo le bhith a’ cur nithean ùra ris an liosta againn de cheumannan CI.

Mar as trice bidh amalachadh leantainneach a’ toirt a-steach beagan còmhdach deuchainn. Bidh riatanasan còmhdach deuchainn ag atharrachadh agus mar as trice lorgar iad ann an sgrìobhainn ris an canar rudeigin mar “stiùiridhean tabhartais”. Cumaidh sinn sìmplidh e agus cuiridh sinn deuchainn airson gach loidhne air an liosta-sgrùdaidh againn.

Nuair a bhios tu a’ ruith shònrachaidhean, feuch na deuchainnean a dhèanamh an-toiseach. Ma tha thu air a stàladh ceart pre-commit dubhan nas tràithe, thèid an deuchainn ùr a ruith, fàillidh e, agus cha tèid dad a ghealltainn. Thoir an aire gur ann mar seo a tha fios againn gu bheil na deuchainnean againn a’ dèanamh deuchainn air rudeigin. Gu inntinneach, nan tòisicheadh ​​​​sinn leis a’ chòd ro na deuchainnean, dh’ fhaodadh a bhith a’ dol seachad air na deuchainnean a bhith a’ ciallachadh gun obraich an còd mar a bhiodh dùil, no nach robh na deuchainnean dha-rìribh a’ dèanamh deuchainn air dad. A bharrachd air an sin, mura robh sinn air na deuchainnean a sgrìobhadh sa chiad àite, is dòcha gum biodh sinn air dìochuimhneachadh gu tur mun deidhinn, leis nach biodh dad air ar cur nar cuimhne.

Leasachadh air a stiùireadh le deuchainn (TDD)

Tha TDD a’ moladh deuchainnean a sgrìobhadh ro chòd. Tha sruth-obrach àbhaisteach a’ cleachdadh TDD a’ coimhead mar seo.

  1. Cuir deuchainn ris.
  2. Ruith a h-uile deuchainn agus dèan cinnteach gu bheil an deuchainn ùr a 'fàilligeadh.
  3. Sgrìobh an còd.
  4. Ruith na deuchainnean, dèan cinnteach gu bheil na deuchainnean uile seachad.
  5. Ath-shuidhich do chòd.
  6. Dèan a-rithist.

Leis gu bheil toraidhean deuchainnean a dh’ fhàilnich mar as trice air an sealltainn ann an dearg, agus mar as trice tha an fheadhainn a chaidh seachad air an sealltainn ann an uaine, canar cuideachd dearg-uaine-refactor ris a’ chearcall.

️Tasg

An toiseach, feuch ris na deuchainnean a dhèanamh agus leig leotha fàiligeadh, an uairsin cuir ris agus gealltainn teacsa liosta ceum CI fhèin. Chì thu gu bheil na deuchainnean a 'dol seachad ("uaine").
An uairsin foillsich an còd ùr don stòr iomallach agus cùm sùil air na deuchainnean air an ruith anns an eadar-aghaidh GitHub aig bonn an deasbaid iarrtas tarraing agus an ùrachadh inbhe PR.

  1. Tionndaidh gu meur feature.
  2. Cuir ris na deuchainnean sin ci.test.js às deidh a’ ghairm mu dheireadh 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. Feuch ri na deuchainnean a dhèanamh. Ma tha pre-commit dubhan air a stàladh, fàilligidh an oidhirp gealltanas.
  4. An uairsin cuir ris an teacsa seo 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. Dèan agus cuir an gnìomh atharrachaidhean gu h-ionadail.
  6. Post atharraichean air a 'mheur feature.

Bu chòir dhut a-nis rudeigin mar seo a bhith agad
Suidheachaidhean àbhaisteach le amalachadh leantainneach

Sgioban


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

Thig còmhla còmhstri

Rach gu Iarrtas Atharrachadh Lèirmheas ceumannan.

Eadhon ged nach do rinn sinn dad ceàrr agus na deuchainnean airson ar còd seachad, chan urrainn dhuinn fhathast am meur a chur còmhla feature и master. Tha e air sgàth an t-sreath eile bugfix chaidh a chur còmhla ri master fhad ‘s a bha sinn ag obair air a’ PR seo.
Tha seo a 'cruthachadh suidheachadh far a bheil am meur iomallach master tha dreach nas ùire aige na am fear air an do stèidhich sinn am meur feature. Air sgàth seo chan urrainn dhuinn dìreach CEANN a thoirt air ais master gu deireadh an t-snàthainn feature. Anns an t-suidheachadh seo, feumaidh sinn geallaidhean a chur còmhla no a chur an sàs feature ath-shuidheachadh master. Faodaidh GitHub aonaidhean fèin-ghluasadach a dhèanamh mura h-eil còmhstri ann. Gu mì-fhortanach, nar suidheachadh, tha atharrachaidhean farpaiseach aig an dà mheur san fhaidhle ci.md. Canar còmhstri aonaidh ris an t-suidheachadh seo, agus feumaidh sinn a rèiteachadh le làimh.

Thig còmhla no ath-shuidheachadh

Cumadh

  • A’ cruthachadh gealltanas aonaidh a bharrachd agus a’ sàbhaladh eachdraidh na h-obrach.
    • A’ glèidheadh ​​geallaidhean tùsail nan geugan leis na clàran-ama agus na h-ùghdaran tùsail aca.
    • A’ sàbhaladh an SHA de gheallaidhean agus cheanglaichean riutha ann an còmhraidhean mu iarrtas atharrachaidh.
  • Feumaidh fuasgladh còmhstri aon-ùine.
  • A’ dèanamh an sgeulachd neo-loidhneach.
    • Faodaidh an sgeulachd a bhith duilich a leughadh air sgàth an àireamh mhòr de mheuran (mar chuimhneachan air càball IDE).
    • A’ dèanamh debugging fèin-ghluasadach nas duilghe, m.e. git bisect cho feumail - chan fhaigh e ach an ceangal co-aonaidh.

Rebase

  • Bidh ath-chuiridhean a 'gealltainn bhon mheur làithreach air mullach a' mheur bunaiteach aon às deidh a chèile.
    • Bithear a’ cruthachadh geallaidhean ùra le SHAn ùra, ag adhbhrachadh gum bi na geallaidhean ann an GitHub a’ maidseadh na h-iarrtasan tarraing tùsail, ach chan e na beachdan co-fhreagarrach.
    • Faodar geallaidhean a thoirt air ais agus atharrachadh sa phròiseas, no eadhon aonachadh ann an aon.
  • Is dòcha gu feumar ioma-chòmhstri fhuasgladh.
  • A’ leigeil leat sgeulachd sreathach a chumail.
    • Is dòcha gum bi an sgeulachd nas fhasa a leughadh fhad ‘s nach eil e ro fhada gun adhbhar reusanta.
    • Tha dì-bhugachadh fèin-ghluasadach agus fuasgladh dhuilgheadasan beagan nas fhasa: ga dhèanamh comasach git bisect, is urrainn dha tar-chuiridhean fèin-ghluasadach a dhèanamh nas soilleire agus nas ro-innse.
  • Feumar meur fhoillseachadh le geallaidhean imrich le bratach --force nuair a thèid a chleachdadh le iarrtasan tarraing.

Mar as trice, bidh sgiobaidhean ag aontachadh an aon ro-innleachd a chleachdadh an-còmhnaidh nuair a dh’ fheumas iad atharrachaidhean a chur còmhla. Dh’ fhaodadh seo a bhith na aonadh “fìor-ghlan” no gealltanas “fìor-ghlan” air a’ mhullach, no rudeigin eatarra, leithid a bhith a’ dèanamh gealltanas air a’ mhullach gu h-eadar-ghnìomhach (git rebase -i) gu h-ionadail airson meuran nach deach fhoillseachadh don stòr phoblach, ach tighinn còmhla airson meuran “poblach”.

An seo cleachdaidh sinn aonachadh.

️Tasg

  1. Dèan cinnteach gu bheil an còd ann am meur ionadail master air ùrachadh bho ionad-tasgaidh iomallach.
  2. Tionndaidh gu meur feature.
  3. Tòisich co-aonadh le meur master. Còmhstri aonaidh air sgàth atharrachaidhean farpaiseach air an ci.md.
  4. Fuasgail a’ chòmhstri gus am fuirich an dà chuid ar liosta de cheumannan CI agus nota mu dheidhinn san teacsa.
  5. Foillsich gealltanas co-aonaidh gu meur iomallach feature.
  6. Thoir sùil air inbhe an iarrtas tarraing anns an UI GitHub agus feitheamh gus an tèid an aonachadh a rèiteachadh.

Sgioban

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

Deagh obair!

Tha thu deiseil leis an liosta agus a-nis feumaidh tu gabhail ris an iarrtas tarraing a-steach master.

️ Gnìomh: Ceadaich iarrtas tarraing "Lèirmheas Steps"

  1. Fosgail iarrtas tarraing.
  2. Briog air "Cuir còmhla iarrtas tarraing".
  3. Briog air "Dearbhaich co-aonadh".
  4. Briog air “Sguab às meur” leis nach eil feum againn air tuilleadh.

Is e seo an stòr agad an-dràsta
Suidheachaidhean àbhaisteach le amalachadh leantainneach

Mearachd toraidh

Thathas ag ràdh “faodar deuchainn a chleachdadh gus làthaireachd mhearachdan a nochdadh, ach gun a bhith a’ sealltainn an neo-làthaireachd. ” Eadhon ged a bha deuchainnean againn agus nach do sheall iad mearachdan sam bith dhuinn, chaidh biast brùideil a-steach gu cinneasachadh.

Ann an suidheachadh mar seo, feumaidh sinn aire a thoirt do:

  • na tha air a chleachdadh ann an riochdachadh;
  • còd san t-snàthainn master le mearachd, às an urrainn do luchd-leasachaidh obair ùr a thòiseachadh.

Am bu chòir dhomh a thoirt air ais no a chàradh san ath dhreach?

Is e gluasad air ais am pròiseas a bhith a’ cleachdadh dreach math nas tràithe a tha aithnichte gu cinneasachadh agus a’ toirt air ais geallaidhean anns a bheil a’ mhearachd. Is e "càradh air adhart" fuasgladh a chur ris an master agus a’ cleachdadh an dreach ùr cho luath ‘s a ghabhas. Leis gu bheil APIan agus sgeamaichean stòr-dàta ag atharrachadh mar a thèid còd a chuir gu cinneasachadh, le lìbhrigeadh leantainneach agus deagh chòmhdach deuchainn, mar as trice tha e nas duilghe agus nas cunnartaiche a dhol air ais na bhith ga chàradh san ath dhreach.

Leis nach eil cunnart sam bith ann a bhith a’ gluasad air ais sa chùis againn, thèid sinn air an t-slighe seo, oir tha e a’ ceadachadh dhuinn

  • ceartaich a 'mhearachd air an toradh cho luath' sa ghabhas;
  • cuir a-steach còd master sa bhad freagarrach airson obair ùr a thòiseachadh.

️Tasg

  1. Tionndaidh gu meur master gu h-ionadail.
  2. Ùraich an stòr ionadail bhon ionad-tasgaidh iomallach.
  3. Thoir air ais an gealltanas co-aonadh PR Lèirmheas ceumannan в master.
  4. Foillsich atharraichean gu ionad-tasgaidh iomallach.

Is e seo eachdraidh stòr-tasgaidh le gealltanas aonadh air ais
Suidheachaidhean àbhaisteach le amalachadh leantainneach

Sgioban

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

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

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

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

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

️ Fèin-dheuchainn

Dèan cinnteach gu bheil ci.md chan eil an teacsa “sneaky bug” ann tuilleadh às deidh gealltanas aonaidh a thilleadh.

Ceartaich an liosta de cheumannan CI agus till air ais gu maighstir

Tha sinn air gealltanas aonadh a’ mheur a thilleadh gu tur. feature. Is e an deagh naidheachd nach eil mearachd sam bith againn a-nis master. Is e an droch naidheachd gu bheil an liosta luachmhor againn de cheumannan amalachaidh leantainneach air falbh cuideachd. Mar sin, gu h-iomchaidh, feumaidh sinn an suidheachadh a chuir an sàs anns na geallaidhean bho feature agus thoir air ais iad master còmhla ris a 'chàradh.

Faodaidh sinn dèiligeadh ris an duilgheadas ann an diofar dhòighean:

  • thoir air ais gealltanas a bheir air falbh aonadh feature с master;
  • gluasad a’ gealltainn bhon fhear roimhe feature.

Bidh diofar sgiobaidhean leasachaidh a’ cleachdadh diofar dhòighean-obrach sa chùis seo, ach gluaisidh sinn geallaidhean feumail gu meur air leth agus cruthaichidh sinn iarrtas tarraing air leth airson a’ mheur ùr seo.

️Tasg

  1. Cruthaich snàithlean ris an canar feature-fix agus tionndaidh thuige.
  2. Imrich a h-uile gealltanas bhon mheur a bh 'ann roimhe feature gu snàthainn ùr. Fuasgail còmhstri co-aonaidh a thachair rè an imrich.

    Suidheachaidhean àbhaisteach le amalachadh leantainneach

  3. Cuir a-steach deuchainn regression gu ci.test.js:

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

  4. Ruith na deuchainnean gu h-ionadail gus dèanamh cinnteach nach fàillig iad.
  5. Thoir air falbh an teacsa "with a sneaky bug" a-steach ci.md.
  6. Cuir atharrachaidhean deuchainn agus atharrachaidhean liosta ceum ris a’ chlàr-amais agus gealltainn iad.
  7. Foillsich am meur gu ionad-tasgaidh iomallach.

Bu chòir dhut rudeigin coltach ri seo a thoirt gu crìch:
Suidheachaidhean àbhaisteach le amalachadh leantainneach

Sgioban

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

Cruthaich iarrtas tarraing.

Cruthaich iarrtas tarraing le tiotal A 'càradh an fheart... Stàlaich feature-fix mar "head meur" agus master mar "bonn meur".
Feuch an fuirich thu fhad ‘s a bhios na deuchainnean deiseil. Chì thu inbhe nan deuchainnean aig bonn an deasbaid PR.

Dèan cinnteach gu bheil thu air a stàladh master anns a chuid forc an tasgaidh Mar "mheur bunaiteach", cha fhreagair mi iarrtasan airson atharrachaidhean air stòras stuthan cùrsa.

Aontaich iarrtas tarraing "A' càradh am feart"

Tapadh leibh airson ceartachadh! Feuch an aontaich thu ris na h-atharraichean gu master bho iarrtas tarraing.

️Tasg

  1. Briog air "Cuir còmhla iarrtas tarraing".
  2. Briog air "Dearbhaich co-aonadh".
  3. Briog air “Sguab às meur” leis nach eil feum againn air tuilleadh.

Is e seo a bu chòir a bhith agad an-dràsta.
Suidheachaidhean àbhaisteach le amalachadh leantainneach

Meal do naidheachd!

Tha thu air a h-uile ceum a bhios daoine a’ gabhail mar as trice a chrìochnachadh rè aonachadh leantainneach.

Ma mhothaicheas tu duilgheadas sam bith leis a’ chùrsa no ma tha fios agad mar a leasaicheas tu e, feuch an cruthaich thu cùis a-staigh stòran le stuthan cùrsa. Tha an cùrsa seo cuideachd dreach eadar-ghnìomhach a’ cleachdadh GitHub Learning Lab mar àrd-ùrlar.

Source: www.habr.com

Cuir beachd ann