Makkelijk Craft CMS wijzigingen doorvoeren met Buddy pipelines
Leer hoe je Buddy pipelines kan gebruiken om automatisch en veilig wijzigingen te implementeren op uw Craft CMS website
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:
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.
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.
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.
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
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.
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
Ik heb een paar flags toegevoegd aan de composer install zodat alles soepel verloopt. Je kunt het volledige commando dat ik gebruik hieronder vinden.
composer install --no-dev --no-progress --no-scripts --no-interaction --prefer-dist --optimize-autoloader --ignore-platform-reqs
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.
"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.
Mijn build step voor de front-end vereist alleen de volgende code
npm install
npm run build
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.
"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”.
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
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.
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.
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"
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
— Dit vind je misschien ook interessant...
—Volledig vernieuwde website voor Oorlogsgravenstichting
Toekomstbestendig beheer van gegevens en inhoud. Integratie van een nieuw SRS met een nieuwe website.
—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.
—Co-creatie van de nieuwe Gumption-website
Implementatie van een herontwerp door Oddball en migratie van bestaande inhoud.