Założenia:
- masz lokalne repo z poprawnie skonfigurowanym remote origin (pisałem o tym m.in. w artykule o zainicjowaniu danymi zdalnego repo)
- masz zdalny serwer na którym znajduje się origin (tzw. "bare" np. w katalogu
/srv/git/my_app.git
) - na tym samym hoście, na którym znajduje się "bare" repo, zdeployowana jest aplikacja, gdzie kod znajduje się w katalogu
/var/www/my_app/code
- chcesz aby po lokalnym
git push origin master
i zaktualizowaniu się repozytorium zdalnym, wysłane zmiany w kodzie zostały automatycznie zaciągnięte do aplikacji
Krok 1
W katalogu/srv/git/my_app.git/hooks
tworzymy plik o nazwie post-receive
Krok 2
W utworzonym właśnie plikupost-receive
umieszczamy taką zawartość:
#!/bin/sh
unset $(git rev-parse --local-env-vars)
cd /var/www/my_app/code
git pull
touch tmp/restart.txt
Krok 3
Plikpost-receive
czynimy wykonywalnym, np.tak:
chmod 755 post-receive
No i właściwie od tej chwili po twoim git push origin master
możesz cieszyć się autodeployem. Całość pomysłu zaciągnąłem z https://stackoverflow.com/questions/5769568/how-to-set-up-a-git-hook-so-that-after-pushing-to-ssh-peterfoo-com-bar-com
Brak komentarzy:
Prześlij komentarz