Automatizați-vă fluxul de lucru cu cârlige git

Credit: Atlass

Ce sunt cârlige git

Cârligele Git sunt scripturi care se execută înainte de anumite evenimente, cum ar fi commit, push, rebase etc. Deoarece sunt bazate pe evenimente, atunci când executați anumite comenzi git, git va verifica cârligele din depozitul git pentru a vedea dacă există un script asociat la alerga. Cârligele se găsesc în directorul .git / hooks.

cd .git / cârlige

Dacă enumerați fișierele din acel director, veți vedea următoarele cârlige de probă.

1. applypatch-msg.sample
2. commit-msg.sample
3. post-update.sample
4. pre-aplicarepatch.sample
5. pre-angajare.semple
6. pre-push.sample
7. pre-rebase.sample
8. pre-recieve.sample
9. prepare-commit-msg.sample
10.update.sample

Cum să le utilizați pentru a vă îmbunătăți fluxul de lucru git

Dacă ați lucrat vreodată la un proiect open-source cu mulți participanți sau poate sunteți responsabilul echipei tehnice pentru un proiect și căutați modalități de a îmbunătăți fluxul de lucru al echipei dvs. în așa fel încât anumite erori de flux de lucru pe care dezvoltatorii sunt predispuse la a fi evitate înainte de a se angaja, poate că ești un dezvoltator căruia îi place să aibă mereu jocul lor A la 100, poate acum este un moment bun pentru a explora cârligele git.

În acest articol, vă voi arăta cum să utilizați cârligul antigel pentru a efectua teste înainte de a împinge codul către sucursala de la distanță. În această postare, voi folosi PHP.

Dacă utilizați o carte pentru Mac, atunci continuați. Dacă utilizați un computer Windows, comenzile shell vor fi diferite. Comenzile Windows nu sunt furnizate în acest post.

Clonați acest depozit. Conține un proiect construit cu Laravel și conține câteva teste unitare scrise cu PHPUnit. După ce ați clonat și configurat, schimbați directorul în directorul git hooks și creați un fișier pre-push. Deschideți acest lucru cu editorul de text preferat, folosesc Atom.

cd .git / cârlige
atingeți pre-apăsare
atom pre-push // Deschideți acest fișier cu orice editor de text doriți

În mod ideal, vreau să pot rula testele înainte de a împinge codul către sucursala de la distanță. Dacă scriptul de cârlig iese cu 0, atunci totul este bine și git continuă să împingă codul către sucursala mea de la distanță. Dacă iese cu un cod diferit de zero, git oprește operația.

Linia 7:
Funcția exec declanșează comanda de a rula testele care este furnizor / bin / phpunit în acest caz.

Dacă utilizați orice alt cadru de testare, cum ar fi codeception, atunci ar trebui să înlocuiți furnizor / bin / phpunit cu comanda specifică pentru a rula testele în cadrul ales. Conținutul variabilei de ieșire va fi un tablou populat cu fiecare linie de ieșire din comandă.

Linia 9:
Dacă codul de ieșire nu este egal cu 0, atunci testul nu a rulat cu succes. Puteți examina conținutul variabilei de ieșire și puteți determina ce element din tablou doriți să afișați pe terminal. Am afișat articolul la indexul 14 care arată un rezumat al testelor, trecerilor și eșecurilor. Această parte depinde de tine. Puteți ieși orice doriți pe terminal; linia de jos este că git-ul se oprește și evenimentul push oricum nu se întâmplă.

Linia 18:
Un cod de ieșire zero înseamnă că suntem cu toții verzi. Git continuă cu evenimentul push către sucursala de la distanță.

Ce urmează?

Faceți fișierul pre-push executabil pentru ca acesta să funcționeze ca un cârlig.

chmod a + x pre-apăsare

Acum continuați să faceți o mică modificare la oricare dintre fișierele din proiect și etapizați fișierele modificate. Puteți regla codul dvs. pentru a declanșa un eșec, astfel încât să putem vedea cârligul în acțiune imediat.

ga. && gc -m „o mică schimbare”
git push origin the-branch-you-are-on

Dacă există o defecțiune, veți vedea ceva de genul de mai jos pe terminalul dvs.:

Care este beneficiul acestui lucru?

1. Spuneți că ați uitat să rulați comanda de testare înainte de a apăsa, acest lucru vă salvează stânjeneala cu care s-ar putea confrunta când eșecul eșuează pe github / bitbucket / gitlab.
2. Rularea testului manual tot timpul înainte de împingere este o sarcină repetitivă, ce facem cu sarcini repetitive? Si eu am crezut la fel! În plus, îți crește productivitatea.
3. Puteți face chestii cu adevărat mișto, cum ar fi calcularea timpului total necesar pentru testarea. În acest fel, puteți ști imediat dacă testele au durat prea mult pentru a fi executate. Ține de tine.

Simțiți-vă liber să explorați alte cazuri de utilizare pentru diferite cârlige de git. Cârlige Git este un instrument interesant pentru automatizarea fluxului de lucru. Partajează-ți gândurile prin secțiunea de comentarii de mai jos.

Ai găsit această postare utilă? Arătați cu drag dragă și împărtășiți.