System deployment`u oparty o Gita #tutorial

Posted by

System Deploymentu współpracujący z naszym repozytorium to jedno z najlepszych rozwiązań dla rozwijania strony internetowej albo aplikacji www. Znam dwa możliwe sposoby na wdrożenie tych metodyk pracy. Pierwszym jest posłużenie się już istniejącym narzędziem do tego, jakim jest deployhq.com. Tworzymy nowy projekt, konfigurujemy go z naszym repozytorium i za pomocą jednego przycisku wysyłamy aktualne zmiany na FTP. Należy zwrócić uwagę na to, że nie są kopiowane wszystkie pliki, tylko commity od ostatniego deployu. Jest to niewątpliwie ogromna zaleta tego serwisu.

Rozwiązanie bazujące na hook`ach Gita

Drugim rozwiązaniem jest napisanie hooka w naszym repozytorium, który np. przy push`u będzie kopiował pliki na wskazany serwer.

W pliku repo/hooks/post-receive:

#!/bin/sh

while read oldrev newrev ref
do
  branch=`echo $ref | cut -d/ -f3`

  if [ "master" == "$branch" ]; then
    git --work-tree=/home/user/public_html/testdb/ checkout -f $branch
    #scp -r -P 21 -p "password123" /home/user/files_from/ user@host:/home/user/files_to/
    scp -r -P 22 -i /path/to/private_key /home/user/files_from/ user@host.pl:/home/user/files_to/
    echo 'Changes pushed live. Deploy OK.'
  fi
done

Do kopiowania plików na serwer wykorzystuje SCP, ponieważ oferuje bezpiecznie logowanie poprzez SSH. Flaga -r oznacza, że kopiujemy całą zawartość katalogu „files_from” łączenie z katalogami zagnieżdżonymi. Warto również podać port ustawiając flagę -P (duża litera, bo mała oznacza hasło).
Opcja z hasłem została zakomentowana, gdyż, jest to mało bezpieczna metoda. Do połączenia wykorzystamy parę kluczy. Po fladze -i podajemy ścieżkę do klucza prywatnego, dzięki któremu uzyskamy dostęp do serwera docelowo. Jak wygenerować poprawnie klucze jest opisane tutaj. Na końcu podajemy już ścieżkę do folderu, który chcemy przetransferować oraz miejsce na serwerze docelowym, do którego mają trafić pliki.

Źródła i linki:

https://stackoverflow.com/questions/1894347/how-to-upload-ftp-files-to-server-in-a-bash-script

http://kb.rootbox.com/generowanie-kluczy-ssh-rsa/

print

Leave a Reply

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *