Terug naar blog

Hoe automatische deployment te configureren met Git met een VPS

Hoe automatische deployment te configureren met Git met een VPS

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.

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:

Deployment with Git screenshot 1

Initialiseer vervolgens de Git-repo:

Deployment with Git screenshot 2

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:

Deployment with Git code screenshot 3

Wijzig de huidige map naar hooks:

Deployment with Git code screenshot 4

Maak nu het post-receive-script aan:

Voer in het script de volgende code in. Zorg ervoor dat je de maplocaties dienovereenkomstig aanpast:

Deployment with Git code screenshot 6

Sla het bestand op en sluit de editor. Stel het bestand in als uitvoerbaar:

Deployment with Git code screenshot 7

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:

Configuring the Local Machine

Deployment with Git code screenshot 8

sample Git project directory:

Initialiseer nu de repo:

Deployment with Git code screenshot 9

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:

sudo git remote

Laten we het testen. We hebben een shellscript aan de projectmap toegevoegd:

project directory

Voeg vervolgens het bestand toe aan het project en voer een commit uit:

Deployment with Git code screenshot 10

In het volgende commando pushen we het project naar de live server:

Deployment with Git code screenshot 11

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:

Nu hebben we een Git-repo nodig die zal fungeren als de beta-branch:

Initialiseer de repo:

sudo git init

Net als voorheen implementeer je een post-receive-script:

sudo nano

Voer daarna de volgende code in:

GNU nano

Sla het bestand op en sluit de editor. Markeer post-receive als een uitvoerbaar bestand:

sudo chmod
  • 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:

Voila! De lokale repo is nu geconfigureerd met de externe beta-repository. Probeer de wijzigingen te pushen:

sudo git add
  • 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:

Vervolgens kun je de beta-release pushen naar live:

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!

author

Hark Labs

Auteur · CloudSigma

Preslav Dobrev is een creatief ontwerper bij CloudSigma, met de nadruk op een consistente bedrijfsidentiteit door middel van traditionele en innovatieve marketingkanalen. Hij is bedreven in het samenvoegen van artistieke visie met strategische marketing om impactvolle merkverhalen te creëren.

Reacties

Nog geen reacties. Wees de eerste.