Siirry pääsisältöön

Git-hookien käyttäminen

Opas Git-hookien käyttöön WordPress-kehityksessä. Lue kuinka automatisoit koodin laadunvalvonnan pre-commit-hookilla ja julkaisuprosessin (kuten välimuistien tyhjennyksen ja Gulp-ajot) post-receive-hookilla Seravon ympäristössä.

Päivitetty tällä viikolla

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 install tai gulp build -ajot.

  • Riippuvuudet: composer install, jos composer.json on 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.
Vastasiko tämä kysymykseesi?