Makkelijk Craft CMS wijzigingen doorvoeren met Buddy pipelines

TechnologieCraft CMSLearningDevops

Leer hoe je Buddy pipelines kan gebruiken om automatisch en veilig wijzigingen te implementeren op uw Craft CMS website

Gepubliceerd op: 04 oktober 2023
Cover

Het kan een uitdaging zijn om je lokaal ontwikkelde website op een server te krijgen. Vroeger startten we een FTP-client en uploadden we elk bestand naar een externe server. Als je het tegenwoordig op deze manier doet, krijg je veel fouten en hoofdpijn. Moderne projecten worden waarschijnlijk gebouwd met behulp van een of ander framework met een bouwstap en zelfs enkele scripts die moeten worden uitgevoerd na de implementatie.

Dit repetitieve werk is iets dat gemakkelijk automatisch door computers kan worden gedaan.

De structuur van een webproject

Laten we eens kijken naar een typische projectopzet:

Web project anatomy

De Git repository is waar alle broncode wordt bewaard en stelt ons in staat om met meerdere mensen aan dezelfde code te werken. Github, Gitlab, Bitbucket zijn goede plekken om deze Git repository te hosten.

Ik raad ook aan om bestandsopslag in de cloud te gebruiken, zoals Amazon S3, als een plek om geüploade assets van klanten op te slaan, zoals afbeeldingen, video's en documenten.

Een algemene workflow voor het uitrollen van code:

  • Push codewijzigingen van een lokale ontwikkelomgeving naar de Git repository
  • Pull code wijzigingen van je Git repository naar je staging en productie omgevingen

Als je met meerdere mensen aan hetzelfde project werkt, moet je misschien ook code naar je lokale ontwikkelomgeving trekken om op één lijn te blijven met de rest van je team.

Een project opzetten in Buddy

Kies de hostingprovider waar de code van je project wordt gehost. Selecteer de integratie, organisatie en de repository die je wilt implementeren.

App buddy works maxpdesign create project Macbook Pro 16

Buddy pipelines

Je kunt meerdere pijplijnen opzetten in een project met elk hun eigen acties die moeten worden uitgevoerd. Ik raad aan om een pipeline op te zetten voor je productieomgeving en een aparte pipeline voor je stagingomgeving. Geef je pijplijn een aparte naam en stel de triggermodus in. Ik raad aan om de triggermodus in te stellen op “On events -> Git push”. Vergeet niet de juiste git branch in te stellen die je wilt deployen. Ik gebruik de hoofd branch om uit te rollen naar productie en de develop branch om uit te rollen naar de staging.

App buddy works maxpdesign create project Macbook Pro 16 1

Pipeline variables instellen

Je kunt pipeline variables definiëren die gemakkelijk opnieuw kunnen worden gebruikt in verschillende acties. Klik op het tabblad Variabelen binnen een pipeline.

App buddy works maxpdesign mpdwee pipelines pipeline 468419 environment variables

Pipeline actions instellen

Als je eenmaal een pijplijn hebt gemaakt, is het tijd om de acties te definiëren die moeten worden uitgevoerd. Alle pijplijnen draaien in een gecontaineriseerde omgeving voordat de daadwerkelijke bestanden naar de server worden overgebracht. Dus als een actie mislukt in de Buddy container, heeft dat geen invloed op je server.

Ik raad aan om de volgende acties in te stellen:

  • Send a notification that the pipeline has started
  • Execute a "composer install"
  • Execute a "npm run build"
  • Rsync the compiled files to the server
  • Execute some recommended commands on the server
  • Send a notification that the pipeline has finished the actions
App buddy works maxpdesign create project Macbook Pro 16 2

Pipeline notifications

Deze notificatie acties zijn volledig optioneel, maar zijn een geweldige manier om de juiste mensen te informeren over de status van een deployment. Je kunt ook een melding instellen als een pijplijn is mislukt, zodat je daarop kunt reageren.

App buddy works maxpdesign create project Macbook Pro 16 3

Meestal voeg ik de volgende variabelen toe aan mijn pipeline:

  • REMOTE_SSH_HOST - The hostname that should be used to ssh into your server
  • REMOTE_SSH_USER - The username that should be used to ssh into your server
  • REMOTE_SSH_PATH - The path to the root directory of the project on the server

"composer install" command instellen

Voeg een nieuwe actie toe en zoek naar “php”. Selecteer deze en bewerk het commando dat moet worden uitgevoerd

App buddy works maxpdesign mpdwee pipelines pipeline 468419 environment variables 1

Ik heb een paar flags toegevoegd aan de composer install zodat alles soepel verloopt. Je kunt het volledige commando dat ik gebruik hieronder vinden.

shell
composer install --no-dev --no-progress --no-scripts --no-interaction --prefer-dist --optimize-autoloader --ignore-platform-reqs
shell

Ga naar het tabblad Omgeving en selecteer het juiste pakket dat je wilt gebruiken en selecteer de juiste versie voor je project. Vergeet niet je wijzigingen op te slaan.

App buddy works maxpdesign mpdwee pipelines pipeline 468419 environment variables 2

"npm run build" commando instellen

In mijn meest recente projecten gebruik ik Vite JS voor mijn frontend tooling. Andere bouwtools zullen waarschijnlijk ook de opdracht “npm run build” gebruiken om de distributiebestanden van je project te bouwen.

Voeg een nieuwe actie toe en zoek naar “node”, selecteer het en voeg de commando's voor je build toe.

App buddy works maxpdesign mpdwee pipelines pipeline 468419 action 1359823 edit

Mijn build step voor de front-end vereist alleen de volgende code

shell
npm install
npm run build
shell

Net als bij mijn composer-actie moet ik de juiste nodejs-versie instellen voor mijn project. In het environment tabblad kun je selecteren welke nodejs image je wilt gebruiken en welke versie. Vergeet niet je wijzigingen op te slaan.

App buddy works maxpdesign mpdwee pipelines pipeline 468419 action 1359823 edit 1

"Rsync" action instellen

Nu al onze projectbestanden klaar en gecompileerd zijn, is het tijd om ze over te zetten naar onze server. Om dit te doen gaan we Rsync gebruiken om de bestanden over te zetten.

Maak dus een andere actie aan en zoek naar “Rsync”.

App buddy works maxpdesign mpdwee pipelines pipeline 468419 action 1359826 edit Macbook Pro 16

Controleer de volgende opties:

  • Compress file data during file transfer
  • Archive mode
  • Delete extraneous files outside pipeline filesystem
  • Recurse into directories

Vervolgens werken we de target settings bij

App buddy works maxpdesign mpdwee pipelines pipeline 468419 action 1359826 edit Macbook Pro 16 1

Gebruik de pipeline variables die we hebben ingesteld om de instellingen in te vullen zodat de actie via SSH verbinding kan maken met de server en de bestanden naar het juiste pad kan overbrengen.

Environment variables

Je kunt het bestandssysteem binnen je Buddy pijplijn gebruiken om je .env bestand aan te maken en je variabelen in te vullen. Deze extra bestanden die je in het bestandssysteem van de pijplijn aanmaakt, worden ook overgebracht naar de server tijdens de Rsync-actie.

Post deploy commands instellen

Vervolgens willen we nog een actie aanmaken in de pijplijn die een aantal commando's zal uitvoeren op de server via SSH. Zoek dus naar SSH bij het toevoegen van de nieuwe actie. In het eerste tabblad van de actie definiëren we welke commando's moeten worden uitgevoerd op de server.

Screenshot 2023 10 12 at 00 36 10

Hieronder staat een voorbeeld van de commando's die ik aanraad om uit te voeren na een implementatie. Deze commando's zijn onder andere het uitvoeren van migraties, het toepassen van wijzigingen in de projectconfiguratie en het leegmaken van sommige caches.

shell
echo "Running craft migration..."
php craft migrate/all --no-content --interactive=0

echo "Applying project config..."
php craft project-config/apply

echo "Running craft additional migration..."
php craft migrate --track=content --interactive=0

echo "Clear multiple caches..."
php craft clear-caches/compiled-classes
php craft clear-caches/compiled-templates
php craft clear-caches/cp-resources
php craft clear-caches/data

echo "Application deployed"
shell

Pipeline is klaar!

Nu alles is ingesteld voor je deployments, kun je weer verder gaan met het ontwikkelen van het project en door je code naar de juiste branch te pushen zal je pipeline zijn werk doen. Je hoeft niet meer via FTP verbinding te maken met de server en handmatig de bestanden die je veranderd hebt te kopiëren. Geen fouten meer maken tijdens deze stap door een bestand te vergeten. Leun gewoon achterover en laat je Buddy pipeline het zware werk doen. Als je ook de notificatie-actie hebt ingesteld, krijg je een bericht wanneer Buddy klaar is met het deployen van je applicatie.

minuten lezen

Deel dit artikel:

Maxime pardon 2023 11 14 112600 fogr
Geschreven door
Maxime Pardon

— Dit vind je misschien ook interessant...

Mockup
9 december 2022
Craft CMS

Volledig vernieuwde website voor Oorlogsgravenstichting

Toekomstbestendig beheer van gegevens en inhoud. Integratie van een nieuw SRS met een nieuwe website.

Go to: Lees meer
20 must-skills for software developers in 2021
28 april 2021
Learning

20 must-skills voor softwareontwikkelaars in 2021

Of je nu al een ervaren ontwikkelaar bent of net begint, als je echt goed wilt worden in deze branche, moet je voortdurend je vaardigheden bijschaven om relevant te blijven. Hier zijn enkele van de meest waardevolle vaardigheden voor ontwikkelaars om dit jaar aan te werken.

Go to: Lees meer
Mockup
10 maart 2023
Technologie

Co-creatie van de nieuwe Gumption-website

Implementatie van een herontwerp door Oddball en migratie van bestaande inhoud.

Go to: Lees meer

Wil je samenwerken? Stuur ons een berichtje

hello@maxpdesign.beContacteer ons
Menu
Menu