Git is het meest populaire versiebeheersysteem op het gebied van softwareontwikkeling. Het is open-source en wordt sinds 2005 actief onderhouden door Linus Torvalds, de beroemde maker van Linux. Tegenwoordig gebruikt een onvoorstelbaar aantal softwareprojecten (inclusief commerciële) Git voor versiebeheer.
Git volgt een gedistribueerde architectuur, waardoor het een perfect voorbeeld is van een DVCS (Distributed Version Control System). Met Git kunnen we tegelijkertijd zowel een lokale als een externe repo beheren. In deze handleiding zullen we demonstreren hoe je een automatische implementatie van een Git-project configureert met een VPS.
Vereisten
In deze handleiding is er één lokale repo en een externe repo op de VPS. De lokale repo zal wijzigingen pushen naar de externe repo. Vanaf de externe repo kunnen we de wijzigingen pushen naar de beta of live branch. Om dit te bereiken, zijn er een paar vereisten waar je eerst voor moet zorgen.
- Een lokale machine en een externe server, die beide Ubuntu als besturingssysteem gebruiken. Deze handleiding laat zien hoe je Ubuntu-servers configureert en instelt.
- Beide machines zijn geconfigureerd met Git.
Om een veilige verbinding met de VPS tot stand te brengen, gebruiken we SSH. Gelukkig ondersteunt Git ook SSH als protocol om verbinding te maken met externe repo's. Deze handleiding behandelt het configureren van SSH om verbinding te maken met externe servers op Ubuntu.
De VPS configureren
Op onze externe server hebben we de volgende configuratie:
- Live-map: /var/www/dummy-domain.com
- Server-repo: /var/repo/site.git
Vanaf de lokale machine zal Git de updates pushen naar de VPS-repo. Vanaf de VPS-repo configureren we een script dat Git zal gebruiken om het automatisch naar de live-map te pushen. Het is ook mogelijk om een repo te configureren voor beta releases.
-
De repositories aanmaken
Maak verbinding met de VPS en maak de repo-locaties aan:
|
1 2 3 |
cd /var sudo mkdir -pv repo && cd repo sudo mkdir -pv site.git && cd site.git |
Initialiseer vervolgens de Git-repo:
|
1 |
sudo git init --bare |
Hier geeft de vlag --bare aan dat er geen bronbestanden zullen zijn, alleen de versiebeheercomponenten.
-
Hooks
Vervolgens configureren we de hooks voor de repo. Elke Git-repo bevat een map genaamd hooks. Deze bevat voorbeeldbestanden die dienen als sjabloon voor hooks en verschillende aangepaste acties.
Volgens de officiële documentatie van Git zijn er drie soorten hooks:
- pre-receive: Dit wordt uitgevoerd zodra de server een push-verzoek ontvangt.
- post-receive: Dit wordt uitgevoerd wanneer een push-verzoek is voltooid.
- update: Vergelijkbaar met pre-receive. Het wordt echter eenmaal per branch uitgevoerd.
Voer vanaf de locatie van de repo het ls-commando uit:
|
1 |
ls -l |
Wijzig de huidige map naar hooks:
|
1 |
cd hooks/ |
Maak nu het post-receive-script aan:
|
1 |
sudo nano post-receive |
Voer in het script de volgende code in. Zorg ervoor dat je de maplocaties dienovereenkomstig aanpast:
|
1 2 |
#!/bin/sh git --work-tree=/var/www/dummy-domain.com --git-dir=/var/repo/site.git checkout -f |
Sla het bestand op en sluit de editor. Stel het bestand in als uitvoerbaar:
|
1 |
sudo chmod +x post-receive |
Nu zal Git, elke keer dat een push is voltooid, in het post-receive-script kijken en de bestanden dienovereenkomstig op hun plaats zetten.
De lokale machine configureren
De externe machine is klaar om inkomende Git-projectupdates te accepteren. Vervolgens configureren we de lokale repo om de VPS als de externe Git-server te gebruiken.
Laten we een voorbeeldmap voor een Git-project maken:
Initialiseer nu de repo:
|
1 |
sudo git init |
We moeten het externe pad van de repo declareren. Hier gaan we naar de externe locatie verwijzen als de live branch. Voer vervolgens het volgende commando uit:
|
1 |
sudo git remote add live ssh://<remote_username>@<remote_ip_address>/var/repo/site.git |
Laten we het testen. We hebben een shellscript aan de projectmap toegevoegd:
Voeg vervolgens het bestand toe aan het project en voer een commit uit:
|
1 2 |
sudo git add . sudo git commit -m "random commit" |
In het volgende commando pushen we het project naar de live server:
|
1 |
sudo git push live master |
Git maakt verbinding met de VPS via SSH. Als de SSH-verbinding is geconfigureerd om een wachtwoord te gebruiken, vraagt Git om het verificatiewachtwoord.
Beta-repository
Wat als het project niet in één stap geïmplementeerd hoeft te worden? Misschien vereist het verdere tests binnen een beta-map. Met de tot nu toe beschreven methode kunnen we een andere branch in de VPS maken, die de beta-branch wordt genoemd.
-
De Beta-branch configureren op de VPS
Eerst moeten we de mappen voor de VPS aanmaken. Maak verbinding met de VPS en maak een map aan onder /var/www:
|
1 2 |
cd /var/www sudo mkdir beta |
Nu hebben we een Git-repo nodig die zal fungeren als de beta-branch:
|
1 2 |
cd /var/repo sudo mkdir -pv beta.git && cd beta.git |
Initialiseer de repo:
|
1 |
sudo git init --bare |
Net als voorheen implementeer je een post-receive-script:
|
1 2 |
cd hooks sudo nano post-receive |
Voer daarna de volgende code in:
|
1 2 |
#!/bin/sh git --work-tree=/var/www/beta --git-dir=/var/repo/beta.git checkout -f |
Sla het bestand op en sluit de editor. Markeer post-receive als een uitvoerbaar bestand:
|
1 |
sudo chmod +x post-receive |
-
De Beta-repo toevoegen op de lokale machine
We zijn nu klaar om de beta-repo toe te voegen aan onze lokale repo. Voer vanuit de lokale projectmap het volgende Git-commando uit:
|
1 |
sudo git remote add beta ssh://<username>@<remote_ip_address>/var/repo/beta.git |
Voila! De lokale repo is nu geconfigureerd met de externe beta-repository. Probeer de wijzigingen te pushen:
|
1 2 3 |
sudo git add . sudo git commit -m "beta version" sudo git push beta master |
-
Verhuizen van Beta naar Live in VPS
Stel dat alle wijzigingen zijn verzameld in de beta repo. Hoe push je de wijzigingen naar de live repo? Het is heel eenvoudig. Binnen de beta repo op de VPS voegen we de lokale live repo toe. Vervolgens pushen we gewoon de beta release naar de live repo.
Maak verbinding met de VPS en voer de volgende commando's uit:
|
1 2 |
cd /var/repo/beta.git sudo git remote add live ../site.git |
Vervolgens kun je de beta-release pushen naar live:
|
1 |
sudo git push live master |
Tot slot
Deze handleiding laat succesvol zien hoe je een VPS configureert en gebruikt als een externe repository voor je Git-project. De VPS kan automatisch de nieuwste code en bestanden implementeren zonder ingewikkelde processen. Het kan ook fungeren als het middelpunt voor samenwerking tussen meerdere ontwikkelteams.
Met behulp van Git kun je een eenvoudig mechanisme opzetten voor automatische implementatie. Voor goed projectbeheer wordt het echter aanbevolen om iets als GitLab te gebruiken. De volgende handleiding laat zien hoe je GitLab installeert en implementeert op een VPS die meerdere projecten beheert. Je kunt ook bekijken hoe je GitLab Continuous Integration (CI) pipelines instelt op Ubuntu 20.04.
Veel plezier met programmeren!















Reacties
Nog geen reacties. Wees de eerste.