Git to najpopularniejszy system kontroli wersji w dziedzinie tworzenia oprogramowania. Jest to oprogramowanie open-source, aktywnie rozwijane od 2005 roku przez Linus Torvalds, słynnego twórcę Linux. Dziś ogromna liczba projektów programistycznych (w tym komercyjnych) używa systemu Git do zarządzania wersjami.
Git opiera się na architekturze rozproszonej, co czyni go doskonałym przykładem DVCS (Distributed Version Control System). Używając systemu Git, możemy jednocześnie zarządzać zarówno lokalnym, jak i zdalnym repozytorium. W tym poradniku pokażemy, jak skonfigurować automatyczne wdrażanie projektu Git za pomocą VPS.
Wymagania wstępne
W tym poradniku będziemy mieć jedno repozytorium lokalne i jedno zdalne na serwerze VPS. Lokalne repozytorium będzie przesyłać zmiany do zdalnego repozytorium. Ze zdalnego repozytorium możemy przesłać zmiany do gałęzi beta lub live . Aby to osiągnąć, musisz najpierw spełnić kilka wymagań wstępnych.
- Lokalna maszyna i zdalny serwer, oba korzystające z systemu operacyjnego Ubuntu. Ten poradnik pokazuje jak skonfigurować i przygotować serwery Ubuntu.
- Obie maszyny są skonfigurowane z systemem Git.
Aby ustanowić bezpieczne połączenie z VPS, będziemy używać SSH. Na szczęście Git obsługuje również SSH jako protokół do łączenia się ze zdalnymi repozytoriami. Ten poradnik omawia konfigurację SSH w celu łączenia się ze zdalnymi serwerami w systemie Ubuntu.
Konfiguracja VPS
Na naszym zdalnym serwerze będziemy mieć następującą konfigurację:
- Katalog live: /var/www/dummy-domain.com
- Repozytorium na serwerze: /var/repo/site.git
Z lokalnej maszyny Git prześle aktualizacje do repozytorium VPS. W repozytorium VPS skonfigurujemy skrypt, którego Git użyje do automatycznego przesłania ich do katalogu live. Możliwe jest również skonfigurowanie repozytorium dla wersji beta .
-
Tworzenie repozytoriów
Połącz się z VPS i utwórz lokalizacje repozytoriów:
|
1 2 3 |
cd /var sudo mkdir -pv repo && cd repo sudo mkdir -pv site.git && cd site.git |
Następnie zainicjuj repozytorium Git:
|
1 |
sudo git init --bare |
W tym miejscu flaga --bare określa, że nie będzie tam żadnych plików źródłowych, a jedynie komponenty kontroli wersji.
-
Hooki
Następnie skonfigurujemy hooki dla repozytorium. Każde repozytorium Git zawiera folder o nazwie hooks. Zawiera on przykładowe pliki, które służą jako szablony dla hooków i różnych niestandardowych akcji.
Zgodnie z oficjalną dokumentacją systemu Git, istnieją trzy rodzaje hooków:
- pre-receive: Jest wykonywany, gdy tylko serwer otrzyma żądanie push.
- post-receive: Jest wykonywany po zakończeniu żądania push.
- update: Podobny do pre-receive. Wykonuje się jednak raz na każdą gałąź.
Z lokalizacji repozytorium uruchom polecenie ls:
|
1 |
ls -l |
Zmień bieżący katalog na hooks:
|
1 |
cd hooks/ |
Teraz utwórz skrypt post-receive:
|
1 |
sudo nano post-receive |
Wewnątrz skryptu wprowadź następujący kod. Pamiętaj, aby odpowiednio zmienić lokalizacje katalogów:
|
1 2 |
#!/bin/sh git --work-tree=/var/www/dummy-domain.com --git-dir=/var/repo/site.git checkout -f |
Zapisz plik i zamknij edytor. Ustaw plik jako wykonywalny:
|
1 |
sudo chmod +x post-receive |
Teraz za każdym razem, gdy przesyłanie (push) zostanie zakończone, Git zajrzy do skryptu post-receive i odpowiednio umieści pliki na swoim miejscu.
Konfiguracja lokalnej maszyny
Zdalna maszyna jest gotowa na przyjmowanie nadchodzących aktualizacji projektu Git. Następnie skonfigurujemy lokalne repozytorium, aby używało VPS jako zdalnego serwera Git.
Stwórzmy przykładowy katalog projektu Git:
Now, initiate the repo:
|
1 |
sudo git init |
Musimy zadeklarować zdalną ścieżkę repozytorium. W tym miejscu będziemy odnosić się do zdalnej lokalizacji jako gałęzi live . Następnie uruchom następujące polecenie:
|
1 |
sudo git remote add live ssh://<remote_username>@<remote_ip_address>/var/repo/site.git |
Przetestujmy to. Dodaliśmy skrypt powłoki do katalogu projektu:
Następnie dodaj plik do projektu i wykonaj commit:
|
1 2 |
sudo git add . sudo git commit -m "random commit" |
W kolejnym poleceniu prześlemy projekt na serwer live:
|
1 |
sudo git push live master |
Git połączy się z VPS za pomocą SSH. Jeśli połączenie SSH zostało skonfigurowane z użyciem hasła, Git poprosi o hasło uwierzytelniające.
Repozytorium beta
Co jeśli projekt nie ma być wdrażany w jednym kroku? Może wymaga dalszych testów w katalogu beta. Korzystając z opisanej dotychczas metody, możemy utworzyć kolejną gałąź na VPS, zwaną gałęzią beta.
-
Konfiguracja gałęzi Beta na VPS
Najpierw musimy utworzyć katalogi na VPS. Połącz się z VPS i utwórz katalog w /var/www:
|
1 2 |
cd /var/www sudo mkdir beta |
Teraz potrzebujemy repozytorium Git, które będzie działać jako gałąź beta:
|
1 2 |
cd /var/repo sudo mkdir -pv beta.git && cd beta.git |
Zainicjuj repozytorium:
|
1 |
sudo git init --bare |
Tak jak poprzednio, zaimplementuj skrypt post-receive:
|
1 2 |
cd hooks sudo nano post-receive |
Następnie wprowadź następujący kod:
|
1 2 |
#!/bin/sh git --work-tree=/var/www/beta --git-dir=/var/repo/beta.git checkout -f |
Zapisz plik i zamknij edytor. Oznacz post-receive jako plik wykonywalny:
|
1 |
sudo chmod +x post-receive |
-
Dodawanie repozytorium Beta na lokalnym komputerze
Jesteśmy teraz gotowi, aby dodać repozytorium beta do naszego lokalnego repozytorium. Z poziomu lokalnego katalogu projektu uruchom następujące polecenie Git:
|
1 |
sudo git remote add beta ssh://<username>@<remote_ip_address>/var/repo/beta.git |
Voila! Lokalne repozytorium jest teraz skonfigurowane ze zdalnym repozytorium beta. Spróbuj przesłać zmiany:
|
1 2 3 |
sudo git add . sudo git commit -m "beta version" sudo git push beta master |
-
Przenoszenie z Beta do Live na VPS
Załóżmy, że wszystkie zmiany zostały zgromadzone w repozytorium beta. Jak przesłać zmiany do repozytorium live? To bardzo proste. W obrębie repozytorium beta na VPS dodajemy lokalne repozytorium live. Następnie po prostu przesyłamy wydanie beta do repozytorium live.
Połącz się z VPS i uruchom następujące polecenia:
|
1 2 |
cd /var/repo/beta.git sudo git remote add live ../site.git |
Następnie możesz przesłać wydanie beta do live:
|
1 |
sudo git push live master |
Podsumowanie
Ten poradnik pomyślnie pokazuje, jak skonfigurować i używać VPS jako zdalnego repozytorium dla projektu Git. VPS może automatycznie wdrażać najnowszy kod i pliki bez żadnego skomplikowanego procesu. Może również służyć jako centrum współpracy dla wielu zespołów programistycznych.
Z pomocą Gita możesz stworzyć prosty mechanizm automatycznego wdrażania. Jednak do właściwego zarządzania projektami zaleca się korzystanie z narzędzi takich jak GitLab. Poniższy poradnik przedstawia instalację i wdrażanie GitLab na VPS zarządzającym wieloma projektami. Możesz również sprawdzić jak skonfigurować potoki ciągłej integracji (CI) GitLab na Ubuntu 20.04.
Miłego kodowania!















Komentarze
Brak komentarzy. Bądź pierwszy.