Tulaga masani ma fa'aauau fa'atasi

Ua e aʻoaʻoina le Git poloaiga ae e te manaʻo e mafaufau pe faʻapefea ona faʻaauau pea le tuʻufaʻatasia (CI) i le mea moni? Pe atonu e te manaʻo e faʻamalieina au gaioiga i aso taitasi? O lenei vasega o le a tuʻuina atu ia te oe tomai faʻapitoa i le faʻaauauina o le tuʻufaʻatasia e faʻaaoga ai se fale teu oloa GitHub. O lenei kosi e le o faʻamoemoe e avea ma se taulaʻi e mafai ona e kiliki i luga; i se isi itu, o le ae faia tutusa lava gaioiga e faia e tagata i le galuega, i le auala lava e tasi latou te faia ai. O le a ou faʻamatalaina le aʻoaʻoga aʻo e alu i laasaga e aofia ai.

O le a le mea tatou te faia?

A o tatou alualu i luma, o le a faasolosolo malie ona tatou fatuina se lisi o laasaga masani a le CI, o se auala sili lea e manatua ai lenei lisi. I se isi faaupuga, o le a matou fatuina se lisi o gaioiga e faia e le au atinaʻe aʻo faia le faʻaauauina o le tuʻufaʻatasia, faʻaauau le tuʻufaʻatasia. O le a matou faʻaogaina foʻi se seti faigofie o suʻega e faʻalatalata atili ai le matou CI i le mea moni.

O lenei GIF o loʻo faʻaalia faʻataʻitaʻi le tautinoga i lau fale teu oloa aʻo e alualu i luma i le vasega. E pei ona e vaʻaia, e leai se mea faigata iinei ma naʻo le mea e sili ona manaʻomia.

Tulaga masani ma fa'aauau fa'atasi

O le ae alu i faʻataʻitaʻiga masani CI:

  • Galue i luga o se vaega;
  • Fa'aaogāina o su'ega fa'a-automate e fa'amautinoa ai le lelei;
  • Fa'atinoina o galuega fa'amuamua;
  • Fete'ena'iga i'uga pe a tu'ufa'atasia lala (fa'atasi fete'ena'iga);
  • E tupu se mea sese i se siosiomaga gaosiga.

O le ā e te aʻoaʻoina?

E mafai ona e taliina fesili nei:

  • O le a le fa'aauauina fa'atasi (CI)?
  • O a ituaiga o suʻega faʻapitoa o loʻo faʻaaogaina i le CI, ma i le tali atu i a latou gaioiga e faʻatupuina?
  • O a talosaga toso ma o afea e manaʻomia ai?
  • O le a le Su'ega Fa'ata'ita'iga (TDD) ma fa'afefea ona fa'atatau ile CI?
  • E tatau ona tu'u fa'atasi pe toe fa'avae suiga?
  • Toe fo'i i tua pe fa'alelei i le isi fa'asologa?

I le taimi muamua sa ou faaliliuina mea e pei o "toso talosaga" i soo se mea, ae o se taunuuga na ou filifili e toe faafoi fasifuaitau i le Igilisi i nisi o nofoaga e faaitiitia ai le maualuga o le valea i tusitusiga. O nisi taimi ou te faʻaaogaina ai le "programmer surzhik" e pei o le veape matagofie "fai" lea e faʻaaoga moni ai e tagata i le galuega.

O le a le tu'ufa'atasiga faifaipea?

Tuufaatasiga faifaipea, poʻo le CI, o se faʻataʻitaʻiga faʻapitoa lea e tuʻufaʻatasia ai e tagata taʻitoʻatasi a latou code i totonu o se faleteuoloa masani ia le itiiti ifo ma le tasi i le aso, ma o le code e maua ai e tatau ona fausia e aunoa ma ni mea sese.

E iai feeseeseaiga e uiga i lenei faaupuga

O le manatu o le fefinaua'i o le tele o taimi o le tuufaatasia. O nisi e finau e faapea o le tuufaatasia o code na o le faatasi i le aso e le lava e tuufaatasia moni ai pea. O se faʻataʻitaʻiga o se 'au e ave e tagata uma le code fou i le taeao ma faʻapipiʻi tasi i le afiafi. E ui o se tete'e talafeagai lea, ae e masani ona talitonu o le fa'amatalaga e tasi i le aso e talafeagai lelei, fa'apitoa, ma talafeagai mo 'au e eseese lapopo'a.

O le isi tete'e o le C ++ ua le toe na'o le gagana e fa'aaogaina i le atina'e, ma na'o le mana'omia o le fa'apotopotoga e leai ni mea sese e avea o se auala e fa'amaonia ai e vaivai. O nisi seti o su'ega (fa'ata'ita'iga, su'ega iunite fa'atino i le lotoifale) e tatau fo'i ona fa'amae'a lelei. I le taimi nei, o loʻo agaʻi atu le faʻalapotopotoga i le faia o se manaʻoga, ma i le lumanaʻi "fausia + iunite suʻega" atonu o le a avea ma masani masani, pe a fai e leʻi faia.

Tuufaatasiga faifaipea ese mai fa'aauau le tu'uina atu (Continuous Delivery, CD) e le mana'omia ai se sui fa'amuta pe a uma ta'amilosaga fa'atasi.

Lisi o laasaga o le a matou faʻaaogaina i le vasega atoa

  1. Toso i totonu le code fou. Fausia se lala mai master. Amata galue.
  2. Fausia tautinoga i lau lala fou. Fau ma su'e ile lotoifale. pasi? Alu i le isi laasaga. I'uvale? Fa'alelei mea sese po'o su'ega ma toe taumafai.
  3. Tu'i i lau faleteuoloa mamao po'o lala mamao.
  4. Fausia se talosaga toso. Talanoa i suiga, fa'aopoopo nisi tautinoga a'o fa'aauau talanoaga. Fai su'ega pasi i le vaega fa'apitoa.
  5. Tuufaatasi/rebase commit mai le matai. Fai su'ega pasi le i'uga tu'ufa'atasi.
  6. Fa'asolo mai le lala fa'apitoa i le gaosiga.
  7. Afai e lelei mea uma ile gaosiga mo sina taimi, faʻafefiloi suiga ile matai.

Tulaga masani ma fa'aauau fa'atasi

️ Sauniuniga

Ia mautinoa o loʻo ia te oe le polokalama saʻo

Ina ia ave lenei kosi e te manaʻomia Node.js и Git tagata fa'atau.

E mafai ona e faʻaogaina soʻo se tagata Git, ae o le a ou tuʻuina atu naʻo poloaiga mo le laina o le faʻatonuga.

Ia mautinoa o loʻo i ai sau Git client faʻapipiʻiina e lagolagoina le laina faʻatonu

Afai e leʻi iai sau tagata Git e lagolagoina le laina o le faʻatonuga, e mafai ona e mauaina faʻatonuga faʻapipiʻi iinei.

Saunia le fale teu oloa

E te manaʻomia le fatuina o se kopi patino (vai) fale teu fa'ata'ita'iga ma fa'ailoga mo le kosi luga ole GitHub. Tatou malilie e vala'au i lenei kopi patino fale teu oloa.

Ua uma? Afai e te le'i suia tulaga fa'aletonu, e foliga mai e vala'au lau fale teu oloa continuous-integration-team-scenarios-students, o loʻo i totonu o lau tala GitHub ma le URL e pei o lenei

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

Na ona ou valaau atu i le tuatusi lea <URL репозитория>.

Fa'amau fa'ailoga pei <тут> o lona uiga e tatau ona e suia sea faaupuga i le tau talafeagai.

Ia mautinoa GitHub gaioiga aofia ai mo lenei fale teu oloa. Afai e le mafai, faʻamolemole faʻafesoʻotaʻi i latou i le kilikiina o le ki tele i le ogatotonu o le itulau, lea e mafai ona e alu i ai i le kilikiina o Actions i le GitHub interface.

O le a le mafai ona e faʻamaeʻaina le kosi e mulimuli i aʻu faʻatonuga pe a le mafai GitHub Actions.

Tulaga masani ma fa'aauau fa'atasi

E mafai ona e faʻaogaina le mafai GitHub e tuʻuina atu Markdown e vaʻai i le tulaga o loʻo i ai nei o le lisi o loʻo matou fatuina iinei

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

E uiga i tali

E ui o le auala sili e faʻamaeʻa ai lenei kosi o le faia lea e oe lava, atonu e iai ni faʻafitauli.

Afai e te lagona e te le malamalama i le mea e fai ma e le mafai ona faʻaauau, e mafai ona e vaʻai i le filo solution, o loʻo i totonu o lau fale teu oloa amata.
Faamolemole aua le tuufaatasia solution в master i le taimi o le kosi. E mafai ona e fa'aogaina le lala lenei e iloa ai le mea e fai, po'o le fa'atusatusaina o lau fa'ailoga ma le tusitala, fa'aaoga uma gafatia e tu'uina mai e Git ia i tatou. Afai ua e leiloa atoa, e mafai ona e suia atoa lau lala master i luga o se lala solution ona toe setiina lea o lau lisi galue i le laasaga o le kosi e te mana'omia.

Fa'aaoga na'o le mea lea pe a e mana'omia moni lava

Tuuina atu lau code

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

O nei poloaiga

  • toe faaigoa master в master-backup;
  • toe faaigoa solution в master;
  • siaki i se lala fou master ma toe tusi mea o lo'o i totonu o le lisi o galuega;
  • Fausia se lala "fofo" mai le "matai" (lea sa masani ona avea ma "fofo") pe afai e te manaʻomia se lala "fofo" i le lumanaʻi.

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

A maeʻa laasaga nei e mafai ona e faʻaaogaina git log master e iloa ai po'o fea ta'utinoga e te mana'omia.
E mafai ona e toe setiina lau lisi galue i lenei tautinoga e pei o lenei:

git reset --hard <the SHA you need>

Afai e te fiafia i le taunuuga, i se taimi e te manaʻomia le faʻasalalauina o lau faʻamaumauga o le fale teu oloa i se faleoloa mamao. Aua nei galo e fa'ailoa manino le lala mamao pe a e faia lenei mea.

git push --force origin master

Faamolemole ia matau matou te faaaogaina git push --force. E foliga mai e te manaʻo e fai lenei mea i le tele o taimi, ae o loʻo i ai se faʻataʻitaʻiga faʻapitoa iinei ma se tasi tagata faʻapipiʻi faʻapipiʻi, e le gata i lea, e malamalama i mea o loʻo ia faia.

Amata ona galue

Tulaga masani ma fa'aauau fa'atasi

Sei o tatou amata tuufaatasia la tatou lisi o laasaga CI. E masani lava e te amataina lenei laasaga e ala i le siakiina o le lomiga lata mai o le code mai le faleoloa mamao, ae e leai se matou fale teu oloa i le taimi nei, o lea matou te faʻapipiʻi mai le mamao.

️ Galuega: fa'afou le fale teu oloa i le lotoifale, fai se lala mai master, amata galue

  1. Fa'apipi'i le fale teu oloa mai <URL репозитория>.
  2. Tamoe npm install i totonu o le lisi o mea e teu ai kosi; Matou te manaʻomia e faʻapipiʻi ai Jest, matou te faʻaaogaina e faʻataʻitaʻi ai suʻega.
  3. Fausia se lala ma faaigoa feature. Su'e ile filo lea.
  4. Fa'aopoopo le code su'ega i ci.test.js i le va o faʻamatalaga e fai mai ia te aʻu e fai lenei mea.

    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. Fa'aopoopo tusitusiga ma laasaga muamua e 4 i le faila 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.  

    Команды

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

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

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

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

Fausia tautinoga i se lala fou, fausia ma faʻataʻitaʻi i le lotoifale

O le a matou faʻatulagaina suʻega e fai aʻo leʻi faia, ona fai lea o le code.

Fa'ata'ita'iga masani pe a otometi su'ega

  • Fa'alotoifale:
    • Fa'aauau pe tali atu i suiga talafeagai;
    • I luga o le faʻasaoina (mo gagana faʻamatalaina poʻo le JIT-compiled);
    • I le taimi o le faʻapotopotoga (pe a manaʻomia le tuʻufaʻatasiga);
    • I le tautinoga;
    • A'o fa'asalalau i se fa'asoa fa'asoa.

  • I luga o le fausiaina o le server poʻo le fausiaina o le siosiomaga:
    • Pe a fa'asalalau le code i se lala/fale teu oloa.
    • O loʻo faʻataʻitaʻiina le code i lenei filo.
    • O le taunuuga o le tu'ufa'atasiga e fa'ata'ita'iina (e masani lava ma master).
    • I le avea ai o se fa'aauau fa'atasi tulaga/fa'aauau le tu'uina atu o paipa

E masani lava, o le saoasaoa o le suʻega suʻega, o le tele foi o taimi e te gafatia e faʻatino ai. O se fa'asoa tulaga masani e ono foliga fa'apenei.

  • Su'ega vave o iunite - a'o fausia, ile paipa CI
  • Su'ega fa'agesegese a iunite, su'ega fa'avavevave ma su'ega tu'ufa'atasi - i luga o le ta'utinoga, i le paipa CI
  • Su'ega vaega lemu ma tu'ufa'atasi - i le paipa CI
  • Su'ega saogalemu, su'ega uta ma isi su'ega e alu ai le taimi po'o su'ega taugata - i paipa CI/CD, ae na'o ni faiga/laasaga/paipa o le fausiaina, mo se fa'ata'ita'iga, pe a sauni se sui fa'amuta po'o le ta'avale ma le lima.

️ Galuega

Ou te fautua atu e fai suʻega ma le lima muamua e faʻaaoga ai le poloaiga npm test. A maeʻa lena, seʻi o tatou faʻaopopo se git hook e faʻataʻitaʻi ai a tatou suʻega i luga o le tautinoga. E tasi le pu'e: Git matau e le o se vaega o le fale teu oloa ma o lea e le mafai ai ona faʻapipiʻi mai GitHub faʻatasi ai ma isi mea o loʻo i ai. E fa'apipi'i le matau e tatau ona e tamo'e install_hook.sh pe kopi le faila repo/hooks/pre-commit i le lisi fa'apitonu'u .git/hooks/.
A e tautino, o le a e vaʻai o loʻo faʻataʻitaʻiina suʻega ma latou siaki e vaʻai pe o iai ni upu autu i le lisi.

  1. Fa'atino su'ega ma le lima e ala ile fa'atonuina npm test i totonu o lau fa'aputuga o le kosi. Fa'amaonia ua mae'a su'ega.
  2. Seti se matau fa'amau (mua'i tu'u le matau) e ala i le tamo'e install_hook.sh.
  3. Tuu atu au suiga i lau fale teu oloa.
  4. Ia mautinoa e fai su'ega a'o le'i faia.

O lau fale teu oloa e tatau ona foliga faʻapenei pe a uma ona mulimuli i laasaga nei.
Tulaga masani ma fa'aauau fa'atasi

Команды

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

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

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

Fa'asalalau fa'ailoga i se fale teu oloa po'o lala mamao

A mae'a la latou galuega i totonu o le lotoifale, e masani lava ona fa'aalia e le au atina'e a latou code fa'alaua'itele ina ia mafai ai ona tu'ufa'atasia ma tagata lautele. Faatasi ai ma GitHub, e masani lava ona ausia lenei mea e ala i le lolomiina o le galuega i se kopi patino o le fale teu oloa (tagata tui) poʻo se lala patino.

  • Faatasi ai ma tui, e faʻapipiʻi e se tagata faʻapipiʻi se fale teu oloa fefaʻasoaaʻi mamao, faia se kopi mamao patino o ia, e taʻua foi o se tui. Ona fa'aputuina lea o lenei fale teu oloa e galulue fa'atasi ma le lotoifale. A maeʻa le galuega ma faia tautinoga, na te tuleia i totonu o lana tui, lea e avanoa mo isi ma mafai ona tuʻufaʻatasia i totonu o le faleoloa masani. O lenei faiga e masani ona faʻaaogaina i galuega faʻavae tatala ile GitHub. E faʻaaogaina foʻi i laʻu vasega maualuga [Team Work and CI with Git] (http://devops.redpill.solutions/).
  • O le isi auala o le faʻaaogaina naʻo le tasi le faleoloa mamao ma naʻo le faitauina o le lala master fa'asoa fa'asoa "puipuia". I lenei faʻataʻitaʻiga, e faʻasalalau e le au atinaʻe taʻitoʻatasi a latou code i lala o se faleoloa mamao ina ia mafai e isi ona vaʻai i lenei code, pe a lelei mea uma, tuʻufaʻatasia ma master fa'asoa fa'asoa.

I lenei vasega faʻapitoa, o le a matou faʻaaogaina se galuega faʻaoga e faʻaaogaina lala.

Tatou lolomi la tatou code.

️ Galuega

  • Fa'asalalau suiga i se lala mamao e tutusa le igoa ma lau lala faigaluega

Команды

git push --set-upstream origin feature

Fausia se talosaga toso

Fausia se talosaga toso ma se ulutala Toe iloilo Laasaga... Faʻapipiʻi feature pei o le "ulu ulu" ma master pei o le "ala faavae".

Ia mautinoa ua e fa'apipi'i master i lona tui le faleteuoloa I le avea ai o se "palanesa faavae", o le a ou le tali atu i talosaga mo suiga i le fale teu oloa a'oa'oga.

I le gagana GitHub, o le "ala faavae" o le lala lea e te faʻavae ai lau galuega, ma o le "ulu ulu" o le lala o loʻo i ai suiga ua fuafuaina.

Talanoa i suiga, fa'aopoopo ni tautinoga fou a'o fa'aauau le talanoaga

Toso talosaga(PR)

Toso talosaga(PR) o se auala e talanoaina ma faʻamaumauga faʻamaumauga, faʻapea foʻi ma le faʻatinoina o le iloiloga o tulafono. Toso talosaga e faaigoa i le auala lautele o le tuʻufaʻatasia o suiga taʻitasi i totonu o le numera atoa. E masani lava, e fa'apipi'i e se tagata le faleteuoloa aloa'ia mamao a le poloketi ma galue i le fa'ailoga i le lotoifale. A maeʻa lenei mea, na te tuʻuina le code i totonu o lana fale teu oloa ma fai atu ia i latou e nafa ma le fale teu oloa e pikiina (toso) lona code i totonu o latou fale teu oloa i le lotoifale, lea latou te toe iloiloina ma atonu e tuʻufaʻatasia(soʻo faʻatasi) lana. O lenei manatu ua lauiloa foi i isi igoa, mo se faataitaiga, talosaga tu'ufa'atasi.

E te le manaʻomia le faʻaogaina o le faʻaogaina o le talosaga a le GitHub poʻo ni faʻavae tutusa. E mafai ona fa'aogaina e 'au fa'atupuina isi auala o feso'ota'iga, e aofia ai feso'ota'iga fa'asagatau, vala'au leo, po'o imeli, ae o lo'o i ai pea le tele o mafua'aga e fa'aoga ai talosaga fa'atoso fa'auta. O nisi nei o latou:

  • fa'atulagaina talanoaga e feso'ota'i ma suiga fa'apitoa;
  • e avea o se nofoaga e matamata ai i manatu faaalia i luga o galuega-faʻagasolo mai le autotesters ma tupulaga;
  • fa'atulafonoina o iloiloga;
  • ina ia mulimuli ane mafai ona e mauaina mafuaaga ma iloiloga i tua atu o lenei po o lena fasi code.

E masani lava e te faia se talosaga toso pe a e manaʻomia le talanoaina o se mea pe maua ni faʻamatalaga. Mo se faʻataʻitaʻiga, afai o loʻo e galue i se vaega e mafai ona faʻatinoina i le sili atu ma le tasi le auala, e mafai ona e fatuina se talosaga toso aʻo leʻi tusia le laina muamua o le code e faʻasoa ai ou manatu ma talanoaina au fuafuaga ma au paaga. Afai e faigofie le galuega, e tatalaina se talosaga toso pe a uma ona faia se mea, tuuto, ma mafai ona talanoaina. I nisi o fa'aaliga, atonu e te mana'o e tatala se PR mo na'o mafua'aga e pulea lelei ai: e fa'atino su'ega fa'aototometi po'o le amataina o iloiloga code. Po o le a lava lau filifiliga, aua neʻi galo e @mention tagata e te manaʻo e faʻatagaina i lau toso talosaga.

E masani lava, pe a fatuina se PR, e te faia mea nei.

  • Fa'ailoa mea e te mana'o e sui ma po'o fea.
  • Tusi se fa'amatalaga e fa'amatala ai le fa'amoemoega o suiga. Atonu e te mana'o:
    • fa'aopoopo so'o se mea taua e le o manino mai le fa'ailoga, po'o se mea e aoga mo le malamalama i le tala, e pei o #bugs talafeagai ma fa'amauina numera;
    • @mention soʻo se tasi e te manaʻo e amata galue ai, pe mafai foi ona e @faʻailoa i latou i faʻamatalaga mulimuli ane;
    • fai atu i uo e fesoasoani i se mea pe siaki se mea patino.

O le taimi lava e te tatalaina ai le PR, o suʻega faʻatulagaina e faʻatautaia i ia tulaga e faʻataunuʻuina. I la matou tulaga, o le a tutusa le seti o suʻega na matou faʻatautaia i le lotoifale, ae i se galuega moni e ono iai ni suʻega faʻaopoopo ma siaki.

Fa'amolemole fa'atali se'i mae'a su'ega. E mafai ona e vaʻai i le tulaga o suʻega i le pito i lalo ole talanoaga PR ile GitHub interface. Fa'aauau pe a mae'a su'ega.

️ Faʻaopoopo se faʻamatalaga e uiga i le faʻafuaseʻi o le lisi o laasaga CI

O le lisi o loʻo faʻaaogaina i lenei vasega e faʻapitoa ma faʻapitoa, e tatau ona tatou faʻaopoopoina se faʻamatalaga e uiga i lenei mea.

️ Galuega: fai se talosaga toso mo lenei manatu

  1. Sui i le lala master.
  2. Fausia se lala e faaigoa bugfix.
  3. Fa'aopoopo fa'amatalaga tusitusia i le pito o le faila 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. Tautino suiga.
  5. Fa'asalalau le filo bugfix i se fale teu oloa mamao.
  6. Fausia se talosaga toso e igoa Faaopoopoina o se faamatalaga ma le lala ulu bugfix ma le lala faavaemaster.

Ia mautinoa ua e fa'apipi'i master i lona tui le faleteuoloa I le avea ai o se "palanesa faavae", o le a ou le tali atu i talosaga mo suiga i le fale teu oloa a'oa'oga.

O le mea lea e tatau ona foliga mai o lau fale teu oloa.
Tulaga masani ma fa'aauau fa'atasi

Команды

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

Fa'amaonia talosaga toso "Fa'aopoopo se fa'amatalaga"

️ Galuega

  1. Fausia se talosaga toso.
  2. Kiliki le "Merge pull request".
  3. Kiliki "Faamaonia le tuufaatasia".
  4. Kiliki "Ta'e le lala", matou te le toe mana'omia.

O le ata lea o tautinoga ina ua mae'a se tu'ufa'atasi.
Tulaga masani ma fa'aauau fa'atasi

️ Fa'aauau le galue ma fa'aopoopo su'ega

O le galulue fa'atasi i se talosaga toso e masani ona i'u ai i galuega fa'aopoopo. E masani lava o le i'uga lea o se iloiloga po'o se talanoaga, ae i la tatou vasega o le a tatou fa'ata'ita'iina lenei mea e ala i le fa'aopoopoina o mea fou i la tatou lisi o la'asaga CI.

Fa'aauau le tu'ufa'atasia e masani ona aofia ai nisi o su'ega. E eseese mana'oga mo su'ega ma e masani lava ona maua i totonu o se pepa e ta'ua o se mea e pei o "taiala o saofaga". Matou te fa'afaigofie ma fa'aopoopo se su'ega mo laina ta'itasi i la matou lisi siaki.

A fa'agasolo tofitofiga, taumafai e fai muamua su'ega. Afai na e fa'apipi'i sa'o pre-commit matau muamua, o le a faia le su'ega fou, o le a le manuia, ma e leai se mea e faia. Manatua o le auala lea matou te iloa ai o matou suʻega o loʻo suʻeina moni se mea. O le mea e malie ai, afai tatou te amata i le code a'o le'i faia su'ega, o le pasia o su'ega e mafai ona faauigaina o le code na galue e pei ona fa'amoemoeina, pe o su'ega e le'o su'eina se mea. Ma le isi, ana matou le tusia muamua su'ega, atonu o le a galo ia i matou, aua e leai se mea e faamanatu mai ia i matou.

Atina'e Fa'asu'esu'e (TDD)

E fautuaina e le TDD le tusi o su'ega a'o le'i fa'ailoga. O se fa'asologa masani e fa'aaoga ai le TDD e fa'apea.

  1. Fa'aopoopo se su'ega.
  2. Fa'atino su'ega uma ma fa'amautinoa ua le manuia le su'ega fou.
  3. Tusi le code.
  4. Fai su'ega, ia mautinoa ua pasi uma su'ega.
  5. Toe fai lau code.
  6. Toe fai.

Talu ai o faʻaiʻuga o suʻega e le manuia e masani ona faʻaalia i le mumu, ma oi latou na pasia e masani ona faʻaalia i le lanu meamata, o le taamilosaga e lauiloa foi o le mumu-lanumeamata-refactor.

️ Galuega

Muamua, taumafai e fai suʻega ma tuʻu i latou e toilalo, ona faʻaopoopo lea ma tuʻuina atu le tusitusiga o le lisi o le laasaga CI lava ia. O le a e vaʻai o loʻo pasi suʻega ("lanu meamata").
Ona lolomi lea o le code fou i le faleoloa mamao ma matamata i suʻega o loʻo faʻatautaia i le GitHub interface i le pito i lalo ole toso talosaga talanoaga ma le faʻafouina o le tulaga PR.

  1. Sui i le lala feature.
  2. Fa'aopoopo nei su'ega i ci.test.js ina ua uma le valaau mulimuli 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. Taumafai e fai su'ega. Afai pre-commit ua fa'apipi'i le matau, o le a le manuia le taumafaiga fa'atino.
  4. Ona faaopoopo lea o le tusitusiga i 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. Fai ma fai suiga i le lotoifale.
  6. Faasalalau suiga i le lala feature.

Ua tatau nei ona e maua se mea faapenei
Tulaga masani ma fa'aauau fa'atasi

Команды


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

Tuufaatasi feteenaiga

Alu ile Suiga Talosaga Toe iloilo Laasaga.

E ui lava ina matou te le'i faia se mea sese ma ua pasi suega mo la matou code, e le mafai lava ona matou tuufaatasia le lala feature и master. Ona o le isi filo bugfix sa tuufaatasia ma master a o matou galulue i lenei PR.
Ole mea lea e tupu ai se tulaga o le lala mamao master o lo'o i ai se fa'amatalaga fou nai lo lea na matou fa'avaeina ai le lala feature. Ona o lenei mea e le mafai ona tatou toe faʻafoʻi le ulu master i le pito o le filo feature. I lenei tulaga, tatou te manaʻomia a le tuʻufaʻatasia pe faʻaaoga tautinoga feature toe fa'avae master. GitHub e mafai moni lava ona faʻaogaina faʻatasi pe a leai ni feteʻenaʻiga. Talofa e, i lo tatou tulaga, o loʻo i ai sui tauva e lua i le faila ci.md. O lenei tulaga ua ta'ua o se fete'ena'iga tu'ufa'atasi, ma e mana'omia ona tatou fo'ia ma le lima.

Tuufaatasi pe toe fa'avae

Faʻatasi

  • Fausia se tu'ufa'atasiga tu'ufa'atasiga fa'aopoopo ma fa'asaoina le tala fa'asolopito o galuega.
    • Fa'asaoina ulua'i commit a lala fa'atasi ma a latou ulua'i fa'ailoga taimi ma tusitala.
    • Faasaoina le SHA o tautinoga ma fesoʻotaʻiga ia i latou i talanoaga talosaga suiga.
  • E mana'omia tasi le taimi e fo'ia ai fete'ena'iga.
  • Fai le tala e leai se laina.
    • O le tala e mafai ona faigata ona faitau ona o le tele o lala (faʻamanatuina o le IDE cable).
    • Fa'afaigata ai le fa'apipi'iina otometi, eg. git bisect itiiti le aoga - e na'o le mauaina o le tu'ufa'atasiga tu'u.

Totogiina

  • Toe ta'i ta'utino mai le lala o iai nei i luga o le lala fa'avae e tasi ma le isi.
    • O tautinoga fou ma SHA fou o loʻo faʻatupuina, ma mafua ai ona faʻafetaui le tautinoga i GitHub ma uluaʻi talosaga toso, ae le o faʻamatalaga tutusa.
    • O tautinoga e mafai ona toe tu'ufa'atasia ma fa'aleleia i le fa'agasologa, pe tu'ufa'atasia fo'i i le tasi.
  • E tele fete'ena'iga atonu e mana'omia ona fo'ia.
  • Fa'ataga oe e fa'atumauina se tala fa'asologa.
    • O le tala atonu e faigofie ona faitau pe afai e le umi tele e aunoa ma se mafuaaga talafeagai.
    • Otometi fa'apipi'i ma fa'afitauli e fai si faigofie: e mafai ai git bisect, e mafai ona fa'amanino ma sili atu ona va'aia le solomuli otometi.
  • Mana'omia le fa'asalalauina o se paranesi o lo'o i ai le femalaga'iga fa'atasi ma se fu'a --force pe a faʻaaogaina ma talosaga toso.

E masani lava, 'au e malilie e fa'aoga i taimi uma le ta'iala tutusa pe a mana'omia le tu'ufa'atasia o suiga. E mafai ona avea lenei mea o se "mama" tuʻufaʻatasia poʻo se "mama" taʻutinoga i luga, poʻo se mea i le va, e pei o le faia o se tautinoga i luga o fesoʻotaʻiga (git rebase -i) fa'apitonu'u mo lala e le'i fa'asalalauina i le faleteuoloa lautele, ae tu'ufa'atasia mo lala "lautele".

O iinei o le a matou faʻaogaina ai le tuʻufaʻatasia.

️ Galuega

  1. Ia mautinoa o loʻo i totonu o se lala faʻapitonuʻu le code master fa'afou mai se fale teu oloa mamao.
  2. Sui i le lala feature.
  3. Amata se fa'atasi ma se lala master. O se fete'ena'iga tu'ufa'atasia ona o suiga fa'atauva i le ci.md.
  4. Fo'ia le fete'ena'iga ina ia tumau uma la matou lisi o la'asaga CI ma se fa'amatalaga e uiga i ai i totonu o tusitusiga.
  5. Lolomi se merge commit i se lala mamao feature.
  6. Siaki le tulaga o le toso talosaga i le GitHub UI ma faʻatali seia maeʻa le tuʻufaʻatasia.

Команды

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

Manaia galuega!

Ua maeʻa lau lisi ma o lea e tatau ona e faʻamaonia le talosaga toso i totonu master.

️ Galuega: Fa'amaonia talosaga toso "Steps review"

  1. Tatala se talosaga toso.
  2. Kiliki le "Merge pull request".
  3. Kiliki "Faamaonia le tuufaatasia".
  4. Kiliki "Ta'e le lala" talu ai tatou te le toe mana'omia.

O lau fale teu oloa i le taimi nei
Tulaga masani ma fa'aauau fa'atasi

Mea sese

Fai mai "o suʻega e mafai ona faʻaaoga e faʻaalia ai le i ai o mea sese, ae aua lava neʻi faʻaalia lo latou toesea." E ui lava sa i ai a matou suʻega ma latou te leʻi faʻaalia mai ia i matou ni mea sese, na tosoina mai se pusi faʻalavelave i le gaosiga.

I se tulaga e pei o lenei, e tatau ona tatou tausia:

  • mea o loʻo faʻapipiʻiina i le gaosiga;
  • code i le filo master ma se mea sese, lea e mafai ai e le au atinaʻe ona amata galuega fou.

E tatau ona ou toe fuli i tua pe toe faaleleia i le isi lomiga?

O le toe fo'i i tua o le fa'agasologa lea o le fa'aogaina o se fa'ata'ita'iga lelei muamua i le gaosiga ma le toe fa'afo'i atu o tautinoga o lo'o iai le mea sese. "Fa'amau i luma" o le fa'aopoopoina lea o se fa'amautu i le master ma fa'apipi'i le lomiga fou i se taimi vave e mafai ai. Talu ai ona o API ma faʻamaumauga faʻamaumauga e sui aʻo faʻapipiʻiina le code i le gaosiga, faʻatasi ai ma le faʻaauau pea o le tuʻuina atu ma le lelei o suʻega faʻataʻitaʻiga, o le toe foʻi i tua e masani lava e sili atu ona faigata ma lamatia nai lo le faʻapipiʻiina i le isi lomiga.

Talu ai o le taʻavale i tua e leai se faʻalavelave i la matou tulaga, o le a matou alu i lenei auala, aua e mafai ai ona matou

  • faʻasaʻo le mea sese i luga o le oloa i se taimi vave e mafai ai;
  • fai code i totonu master talafeagai vave mo le amataina o se galuega fou.

️ Galuega

  1. Sui i le lala master i le lotoifale
  2. Fa'afou le fale teu oloa mai le fale teu oloa mamao.
  3. Toe fa'afo'i le ta'utinoga tu'ufa'atasiga a le PR Toe iloilo Laasaga в master.
  4. Fa'asalalau suiga ile faleteuoloa mamao.

Ole tala'aga lea ole faleteuoloa ma ua toe fa'afo'i le tu'ufa'atasiga
Tulaga masani ma fa'aauau fa'atasi

Команды

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

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

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

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

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

️ Su'ega a le tagata lava ia

Ia mautinoa lena mea ci.md e le o toe iai le tusitusiga "sneaky bug" pe a uma ona toe fa'afo'i se tu'ufa'atasiga tu'ufa'atasi.

Fa'amau le lisi o la'asaga CI ma toe fa'afo'i ile matai

Ua matou toe fa'afo'i atoa le tu'ufa'atasiga o le lala. feature. O le tala fiafia o lea ua leai se mea sese i totonu master. O le tala leaga o le matou lisi taua o laasaga faʻaauau faʻatasi ua leai foi. O lea la, o le mea sili, tatou te manaʻomia le faʻaogaina o le faʻatonuga i le commit mai feature ma toe faafoi i latou i master faatasi ai ma le faaleleia.

E mafai ona tatou taulimaina le faafitauli i auala eseese:

  • toe fa'afo'i se ta'utinoga e fa'aleaogaina ai se tu'ufa'atasiga feature с master;
  • fesiitai commit mai le muamua feature.

E 'ese'ese 'au atina'e e fa'aogaina auala 'ese'ese i lenei tulaga, peita'i o le a matou fa'agasolo atu fa'atonuga aoga i se lala 'ese'ese ma faia se talosaga toso ese mo lenei lala fou.

️ Galuega

  1. Fausia se filo e taʻua feature-fix ma sui i ai.
  2. Fa'asolo uma tautinoga mai le lala muamua feature i se filo fou. Fo'ia fete'ena'iga tu'ufa'atasi na tutupu i le taimi o femalagaiga.

    Tulaga masani ma fa'aauau fa'atasi

  3. Fa'aopoopo se su'ega toe fa'afo'i i ci.test.js:

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

  4. Fa'ata'ita'i su'ega i le lotoifale ina ia mautinoa e le pa'u.
  5. Ave'ese le tusitusiga "fa'atasi ai ma se pusi fa'afefe" i totonu ci.md.
  6. Fa'aopoopo suiga o su'ega ma suiga lisi o la'asaga i le fa'asinomaga ma tu'uina atu.
  7. Lomia le lala i se fale teu oloa mamao.

E tatau ona e fa'ai'u i se mea e pei o lenei:
Tulaga masani ma fa'aauau fa'atasi

Команды

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

Fausia se talosaga toso.

Fausia se talosaga toso ma se ulutala Fa'amauina o le vaega... Faʻapipiʻi feature-fix pei o le "ulu ulu" ma master pei o le "ala faavae".
Fa'amolemole fa'atali se'i mae'a su'ega. E mafai ona e vaʻai i le tulaga o suʻega i le pito i lalo ole talanoaga PR.

Ia mautinoa ua e fa'apipi'i master i lona tui le faleteuoloa I le avea ai o se "palanesa faavae", o le a ou le tali atu i talosaga mo suiga i le fale teu oloa a'oa'oga.

Fa'amaonia le talosaga toso "Fa'aleleia o le ata"

Faafetai mo le faasa'oga! Fa'amolemole fa'amaonia suiga ile master mai toso talosaga.

️ Galuega

  1. Kiliki le "Merge pull request".
  2. Kiliki "Faamaonia le tuufaatasia".
  3. Kiliki "Ta'e le lala" talu ai tatou te le toe mana'omia.

Ole mea lea e tatau ona iai ile taimi nei.
Tulaga masani ma fa'aauau fa'atasi

Fa'afetai!

Ua mae'a uma la'asaga e masani ona faia e tagata i le fa'aauauina o fa'atasi.

Afai e te maitauina ni faʻafitauli i le kosi pe iloa pe faʻafefea ona faʻaleleia, faʻamolemole fai se mataupu i totonu faleteuoloa ma mea aoga. O lenei kosi e iai foi fa'asalalauga feso'ota'i fa'aoga GitHub Learning Lab e fai ma fa'avae.

puna: www.habr.com

Faaopoopo i ai se faamatalaga