Git-hookit ovat skriptejä, joiden avulla voit suorittaa automaattisia toimintoja Git-työnkulun eri vaiheissa (esim. ennen commitia tai pushin jälkeen). Hookit sijaitsevat projektisi .git/hooks/-hakemistossa. Huomioithan, että niitä ei kopioida automaattisesti push/pull-toimintojen yhteydessä.
Lue lisää Git-hookeista Gitin dokumentaatiosta.
Kehityksen aikana: pre-commit-hook
pre-commit-hook suoritetaan paikallisesti jokaisen commit-yrityksen yhteydessä. Jos skripti palauttaa virhekoodin, tallennus (commit) keskeytyy. Tämä on erinomainen työkalu laadunvalvontaan, sillä se estää esimerkiksi syntaksivirheitä sisältävän koodin päätymisen Git-repoon.
Seravon projektipohjassa on esimerkki tästä osoitteessa scripts/git-hooks/pre-commit. Oletuksena se tarkistaa PHP-tiedostojen syntaksivirheet (php -l).
Pre-commit-hookin ohittaminen
Voit ohittaa tarkistukset tilapäisesti -n-lipulla:
git commit -n -m "Viesti"
Julkaisun aikana: post-receive-hook
Kun ajat komennon git push production, palvelin voi suorittaa post-receive-hookin. Seravolla tätä hookia ei ole asennettu valmiiksi. Jos haluat automatisoida toimintoja julkaisun jälkeen, sinun tulee luoda skripti itse.
Tyypillisiä käyttötapoja:
Koodin rakentaminen:
npm installtaigulp build-ajot.Riippuvuudet:
composer install, joscomposer.jsonon muuttunut.Välimuistit: WordPressin ja Nginxin välimuistien tyhjennys.
Post-receive-hookin käyttöönotto
Hookin on sijaittava palvelimella polussa /data/wordpress/.git/hooks/post-receive ja sillä on oltava suoritusoikeudet:
chmod +x /data/wordpress/.git/hooks/post-receive
Hookien testaaminen
Koska hookit ovat tavallisia skriptejä, voit testata niitä ajamalla ne suoraan komentoriviltä:
/data/wordpress/.git/hooks/post-receive
Esimerkki onnistuneesta ajosta:
Seravo: running post-receive git hook
Seravo: composer.json was updated, installing...
Loading composer repositories with package information
Installing dependencies from lock file
Nothing to install or update
Seravo: SASS files changed, running Gulp...
[22:14:20] Finished 'sass' after 270 ms
Seravo: Flushing all caches...
----> Purging WordPress object cache...
Success: The cache was flushed. ---->
Purging Nginx page cache...
Cache purged successfully.
