ProHoster > Blog > administrasie > Hoe om GitLab en Pantheon te koppel en Drupal- en WordPress-werkstrome te optimaliseer
Hoe om GitLab en Pantheon te koppel en Drupal- en WordPress-werkstrome te optimaliseer
Ons skepper van gasontwikkelaarnutsgoed by Pantheon praat oor hoe om WordPress-ontplooiings met GitLab CI/CD te outomatiseer.
В Pantheon Ek werk in ontwikkelaarverhoudinge, so ek is altyd op soek na nuwe maniere om WordPress- en Drupal-ontwikkelaars te help om outomatiseringsprobleme in hul werkvloei op te los. Om dit te doen, eksperimenteer ek graag met nuwe gereedskap en kombineer dit met mekaar om effektief te werk.
Ek sien dikwels ontwikkelaars sukkel met 'n enkele bediener.
Dit is so 'n plesier om te wag vir jou beurt om 'n intermediêre bediener te gebruik of vir kliënte 'n URL te stuur met die nota: "Kyk hier, maar moet nog nie hier kyk nie."
Multidev omgewings - een van die cool Pantheon-gereedskap - los hierdie probleem op, want daarmee kan jy omgewings vir Git-takke op aanvraag skep. Elke multidev-omgewing het sy eie URL en databasis, sodat ontwikkelaars rustig kan werk, kwaliteit nagaan en goedkeuring kry sonder om op mekaar se tone te trap.
Maar Pantheon het nie gereedskap vir weergawebeheer of deurlopende integrasie en ontplooiing (CI/CD) nie. Maar dit is 'n buigsame platform waarmee u enige gereedskap kan integreer.
Ek het ook opgemerk dat spanne sekere instrumente vir ontwikkeling gebruik, en verskillendes vir samestelling en ontplooiing.
Hulle het byvoorbeeld verskillende gereedskap vir weergawebeheer en CI/CD. Jy moet rondvroetel en wissel tussen gereedskap om kode te wysig en probleme te diagnoseer.
Op GitLab daar is 'n volledige stel ontwikkelingshulpmiddels: vir weergawebeheer, kaartjies, samesmeltingsversoeke, 'n beste-in-klas CI/CD-pyplyn, 'n houerregister, en alles soos dit. Ek het nog nie 'n toepassing teëgekom wat soveel bied om jou ontwikkelingswerkvloei te bestuur nie.
Ek is mal oor outomatisering, so ek het geleer hoe om Pantheon aan GitLab te koppel sodat commits tot die hooftak op GitLab na die hoofontwikkelingsomgewing in Pantheon ontplooi word. En saamsmeltversoeke op GitLab kan kode skep en ontplooi na multidev-omgewings in Pantheon.
In hierdie tutoriaal sal ek jou deurloop hoe om 'n verbinding tussen GitLab en Pantheon op te stel en jou WordPress- en Drupal-werkvloei te optimaliseer.
Natuurlik is dit moontlik, spieël GitLab-bewaarplek, maar ons sal alles met ons hande doen om in te delf GitLab CI en in die toekoms gebruik hierdie hulpmiddel nie net vir ontplooiing nie.
Inleiding
Vir hierdie pos moet u verstaan dat Pantheon elke webwerf in drie elemente opdeel: kode, databasis en lêers.
Die kode bevat CMS-lêers soos WordPress-kern, inproppe en temas. Hierdie lêers word bestuur in Git-bewaarplekke, aangebied deur Pantheon, wat beteken dat ons kode van GitLab na Pantheon met Git kan ontplooi.
Lêers in Pantheon is medialêers, dit wil sê beelde vir die webwerf. Tipies word dit deur gebruikers opgelaai en Git ignoreer hulle.
My projek oor Pantheon en GitLab word genoem pantheon-gitlab-blog-demo. Die projeknaam moet uniek wees. Hier sal ons met 'n WordPress-werf werk. Jy kan Drupal neem, maar jy sal sekere dinge moet verander.
As jou hande jeuk om iets te verander, byvoorbeeld om plugins te verwyder of by te voeg, wees geduldig. Die webwerf is nog nie aan GitLab gekoppel nie, en ons wil hê dat alle kodeveranderings deur GitLab moet gaan.
Sodra ons WordPress geïnstalleer het, gaan terug na die Pantheon-webwerf se dashboard en verander die ontwikkelingsmodus na Git.
Aanvanklike commit op GitLab
Nou moet u die aanvanklike WordPress-kode van die Pantheon-werf na GitLab oordra. Om dit te doen, kloon ons die kode vanaf die Git-bewaarplek van die Pantheon-werf plaaslik, en stuur dit dan na die GitLab-bewaarplek.
Kom ons verander nou git remote originom na GitLab te wys in plaas van Pantheon. Dit kan gedoen word командой git remote.
Kom ons gaan na die GitLab-projek en kopieer die bewaarplek-URL vanaf die Kloon-aftreklys op die projekbesonderhedebladsy. Kom ons kies die Kloon met SSH opsie, want ons het reeds die SSH sleutel gekonfigureer.
By verstek git remote vir 'n plaaslike kopie van die kodebewaarplek - origin. Dit kan verander word c git remote set-url origin [URL репозитория GitLab], waar in plaas van hakies ons die werklike URL invoer.
Uiteindelik begin ons git push origin master --forceom WordPress-kode van Pantheon na GitLab te stoot.
Die –force-opsie is net een keer nodig. Dan in spanne git push dit sal nie op GitLab wees nie.
Die opstel van geloofsbriewe en veranderlikes
Onthou jy hoe ons 'n SSH-sleutel plaaslik bygevoeg het om by Pantheon en GitLab aan te meld? Die SSH-token kan gebruik word om GitLab en Pantheon te magtig.
Ons sal nou die eerste twee stappe voltooi: Kom ons skep 'n nuwe SSH-sleutelpaar plaaslik met ssh-keygen en voeg die private sleutel as 'n veranderlike by die projek.
Dan sal ons vra SSH_PRIVATE_KEY hoe GitLab CI/CD omgewingsveranderlike in die projekinstellings.
In die derde en vierde stappe sal ons 'n lêer skep .gitlab-ci.yml met inhoud soos hierdie:
Laat ons nog nie die lêer commit nie .gitlab-ci.yml, dan sal jy iets anders daarby moet voeg.
Nou voer ons die vyfde stap uit en voeg die publieke sleutel wat jy in die eerste stap geskep het by die dienste waartoe jy toegang benodig in die bou-omgewing.
In ons geval wil ons toegang verkry tot Pantheon vanaf GitLab. Ons volg die instruksies in die Pantheon-dokument op voeg 'n SSH-sleutel by Pantheon en voer hierdie stap uit.
Onthou: privaat SSH is in GitLab, oop SSH is in Pantheon.
Kom ons stel nog 'n paar omgewingsveranderlikes op. Die eerste een word PANTHEON_SITE genoem. Die waarde daarvan is die naam van die Pantheon-werf op jou masjien.
Die naam op die masjien word aan die einde van die Clone with Git-opdrag gelys. Jy het reeds die webwerf plaaslik gekloon, so dit sal die naam van die plaaslike bewaarplekgids wees.
Kom ons stel dan die omgewingsveranderlike op PANTHEON_GIT_URL. Dit is die Git-bewaarplek-URL vir die Pantheon-werf wat ons reeds gebruik het.
Voer slegs die URL van die SSH-bewaarplek in, sonder git clone en die naam van die webwerf op die masjien aan die einde.
Pff. Dit is klaar, nou kan ons ons lêer voltooi .gitlab-ci.yml.
Skep 'n ontplooiingstaak
Wat ons aanvanklik met GitLab CI gaan doen, is baie soortgelyk aan wat ons in die verlede met Git-bewaarplekke gedoen het. Maar hierdie keer, kom ons voeg die Pantheon-bewaarplek by as 'n tweede afgeleë Git-bron, en druk dan die kode van GitLab na Pantheon.
Om dit te doen, kom ons konfigureer verhoogdeploy и taakdeploy:dev, want ons sal ontplooi na die ontwikkelingsomgewing op Pantheon. Die resulterende lêer .gitlab-ci.yml sal so lyk:
veranderlikes SSH_PRIVATE_KEY, PANTHEON_SITE и PANTHEON_GIT_URL moet bekend lyk - ons het hierdie omgewingsveranderlikes vroeër opgestel. Met hierdie veranderlikes sal ons die waardes in die lêer kan gebruik .gitlab-ci.yml baie keer, en hulle sal net op een plek opgedateer hoef te word.
Laastens, voeg die lêer by, pleeg en stuur die lêer .gitlab-ci.yml op GitLab.
Gaan die ontplooiing na
As ons alles reg gedoen het, die taak deploy:dev sal suksesvol in GitLab CI/CD loop en 'n commit indien .gitlab-ci.yml by Pantheon. Kom ons kyk.
Stuur samesmeltingsversoekdrade na Pantheon
Hier sal ons my gunsteling Pantheon-funksie gebruik − multidev, waar jy op aanvraag bykomende Pantheon-omgewings vir Git-takke kan skep.
Toegang tot multidev is beperk, sodat hierdie afdeling oorgeslaan kan word. Maar as u toegang het, kan u produktiwiteit ernstig verhoog deur outomatiese skepping van multidev-omgewings op Pantheon vanaf GitLab-samesmeltingsversoeke op te stel.
Laat ons eers 'n nuwe Git-tak plaaslik maak deur gebruik te maak van git checkout -b multidev-support. Kom ons verander nou weer iets in .gitlab-ci.yml.
Ek hou daarvan om die samesmeltingsversoeknommer in die Pantheon-omgewingsnaam in te sluit. Byvoorbeeld, die eerste samesmeltingsversoek is mr-1, tweede - mr-2 ens.
Die samesmeltingsversoek verander, so ons moet die Pantheon-takname dinamies bepaal. Dit is maklik op GitLab - jy hoef net te gebruik vooraf gedefinieerde omgewingsveranderlikes.
Ons kan vat $CI_MERGE_REQUEST_IIDom die samesmeltingsversoeknommer te spesifiseer. Kom ons pas dit alles toe saam met die globale omgewingsveranderlikes wat ons vroeër gespesifiseer het en voeg 'n nuwe deploy:multidev-taak aan die einde van die lêer by .gitlab-ci.yml.
deploy:multidev:
stage: deploy
environment:
name: multidev/mr-$CI_MERGE_REQUEST_IID
url: https://mr-$CI_MERGE_REQUEST_IID-$PANTHEON_SITE.pantheonsite.io/
script:
# Checkout the merge request source branch
- git checkout $CI_COMMIT_REF_NAME
# Add the Pantheon git repository as an additional remote
- git remote add pantheon $PANTHEON_GIT_URL
# Push the merge request source branch to Pantheon
- git push pantheon $CI_COMMIT_REF_NAME:mr-$CI_MERGE_REQUEST_IID --force
only:
- merge_requests
Dit sal soortgelyk wees aan ons taak deploy:dev, net die tak word na Pantheon gestuur, nie om nie master.
Ons het die opgedateerde lêer bygevoeg en toegepas .gitlab-ci.yml, en laat ons nou 'n nuwe tak na GitLab stoot git push -u origin multidev-support.
Kom ons skep nou 'n nuwe samesmeltingsversoek van die tak multidev-supportdeur te klik Skep saamvoegversoek.
Nadat ons 'n samesmeltingsversoek geskep het, kyk ons na hoe die CI/CD-taak uitgevoer word deploy:multidev.
Kyk, 'n nuwe draad is na Pantheon gestuur. Maar as ons na die multidev-afdeling op die Pantheon-webwerf se dashboard gaan, sal ons nie die nuwe omgewing daar sien nie
Kom ons kyk na die Git-takke-afdeling.
As gevolg hiervan, ons draad mr-1 by Pantheon gekom. Kom ons skep 'n omgewing uit 'n tak mr-1.
Ons het 'n multidev-omgewing geskep, kom ons gaan nou terug na GitLab en kyk na die afdeling Bedryf > Omgewings. Ons sal inskrywings sien vir dev и mr-1.
Dit is omdat ons 'n inskrywing bygevoeg het environment Met naam name и url in CI/CD-take. As ons op die oop omgewing-ikoon klik, sal ons na die URL van die multidev-omgewing op Pantheon geneem word.
Outomatiseer die skepping van multidev
In beginsel kan jy hier stop en net onthou om 'n multidev-omgewing vir elke samesmeltingversoek te skep, maar hierdie proses kan geoutomatiseer word.
Pantheon het 'n opdragreëlinstrument Terminus, waar jy outomaties met die platform kan werk. Terminus laat jou toe om multidev-omgewings vanaf die opdragreël te skep - ideaal vir GitLab CI.
Ons benodig 'n nuwe samesmeltingsversoek om dit te toets. Kom ons skep 'n nuwe tak met behulp van git checkout -b auto-multidev-creation.
Om Terminus in GitLab CI/CD-take te gebruik, benodig jy 'n masjientoken vir verifikasie met Terminus en 'n houerbeeld met Terminus.
Skep 'n Pantheon Machine Token, stoor dit op 'n veilige plek en voeg dit by as 'n globale omgewingsveranderlike in GitLab met die naam PANTHEON_MACHINE_TOKEN.
As jy vergeet het hoe om GitLab-omgewingsveranderlikes by te voeg, gaan terug na waar ons gedefinieer het PANTHEON_SITE.
Skep 'n Docker-lêer met Terminus
As jy nie Docker gebruik nie of nie van lêers hou nie Dockerfile, neem my beeld registry.gitlab.com/ataylorme/pantheon-gitlab-blog-demo:latest en slaan hierdie afdeling oor.
GitLab het 'n houerregister, waar ons die Dockerfile vir ons projek kan bou en plaas. Kom ons skep 'n Dockerfile met Terminus om met Pantheon te werk.
Terminus is 'n PHP-opdragreëlinstrument, so kom ons begin met die PHP-beeld. Ek installeer Terminus deur Composer, so ek sal gebruik amptelike Docker Composer-beeld. Ons skep Dockerfile in die plaaslike bewaarplekgids met die volgende inhoud:
# Use the official Composer image as a parent image
FROM composer:1.8
# Update/upgrade apk
RUN apk update
RUN apk upgrade
# Make the Terminus directory
RUN mkdir -p /usr/local/share/terminus
# Install Terminus 2.x with Composer
RUN /usr/bin/env COMPOSER_BIN_DIR=/usr/local/bin composer -n --working-dir=/usr/local/share/terminus require pantheon-systems/terminus:"^2"
Volg die instruksies vir die samestelling en stuur van beelde uit die afdeling Bou en druk beelde в houerregisterdokumentasieom 'n beeld van te versamel Dockerfile en druk dit na GitLab.
Maak die afdeling oop register in die GitLab-projek. As alles volgens plan verloop het, sal ons beeld daar wees. Skryf 'n skakel na die beeldmerker neer - ons het dit nodig vir die lêer .gitlab-ci.yml.
artikel script in die probleem deploy:multidev begin groei, so kom ons skuif dit na 'n aparte lêer. Skep 'n nuwe lêer private/multidev-deploy.sh:
#!/bin/bash
# Store the mr- environment name
export PANTHEON_ENV=mr-$CI_MERGE_REQUEST_IID
# Authenticate with Terminus
terminus auth:login --machine-token=$PANTHEON_MACHINE_TOKEN
# Checkout the merge request source branch
git checkout $CI_COMMIT_REF_NAME
# Add the Pantheon Git repository as an additional remote
git remote add pantheon $PANTHEON_GIT_URL
# Push the merge request source branch to Pantheon
git push pantheon $CI_COMMIT_REF_NAME:$PANTHEON_ENV --force
# Create a function for determining if a multidev exists
TERMINUS_DOES_MULTIDEV_EXIST()
{
# Stash a list of Pantheon multidev environments
PANTHEON_MULTIDEV_LIST="$(terminus multidev:list ${PANTHEON_SITE} --format=list --field=id)"
while read -r multiDev; do
if [[ "${multiDev}" == "$1" ]]
then
return 0;
fi
done <<< "$PANTHEON_MULTIDEV_LIST"
return 1;
}
# If the mutltidev doesn't exist
if ! TERMINUS_DOES_MULTIDEV_EXIST $PANTHEON_ENV
then
# Create it with Terminus
echo "No multidev for $PANTHEON_ENV found, creating one..."
terminus multidev:create $PANTHEON_SITE.dev $PANTHEON_ENV
else
echo "The multidev $PANTHEON_ENV already exists, skipping creating it..."
fi
Die skrif is in 'n private gids en laat nie webtoegang tot Pantheon toe nie. Ons het 'n skrif vir ons multidev-logika. Kom ons werk nou die afdeling op deploy:multidev lêer .gitlab-ci.ymlsodat dit so uitkom:
Ons moet seker maak dat ons take uitgevoer word in die geskepte pasgemaakte beeld, so kom ons voeg 'n definisie by image van register URL na .gitlab-ci.yml. Gevolglik het ons met 'n lêer soos hierdie beland .gitlab-ci.yml:
Voeg by, verbind en stuur private/multidev-deploy.sh и .gitlab-ci.yml. Nou keer ons terug na GitLab en wag vir die CI/CD-taak om te voltooi. Wees geduldig: multidev kan 'n paar minute neem om te skep.
Dan gaan kyk ons na die multidev-lys op Pantheon. O wonderwerk! Multidev omgewing mr-2 reeds hier.
Gevolgtrekking
My span het baie meer pret gehad toe ons saamsmeltversoeke begin oopmaak het en omgewings outomaties geskep het.
Met die kragtige instrumente van GitLab en Pantheon, kan jy GitLab outomaties aan Pantheon koppel.
Aangesien ons GitLab CI/CD gebruik, sal ons werkvloei ruimte hê om te groei. Hier is 'n paar idees om jou aan die gang te kry:
Voeg 'n boustap by.
Voeg outomatiese toetsing by.
Voeg 'n taak by om te verseker dat aan kodestandaarde voldoen word.
Ons by Pantheon het goeie werk gedoen met weergawe 2 van ons plugin vir Terminus bou gereedskap met GitLab-ondersteuning. As jy jou nie wil steur aan instellings vir elke projek nie, probeer hierdie inprop en help ons om die v2 beta te toets. Vir die Terminus-span build:project:create Jy benodig net 'n Pantheon-token en 'n GitLab-token. Sy sal een van die voorbeeldprojekte met Composer en outomatiese toetsing ontplooi, 'n nuwe projek in GitLab, 'n nuwe Pantheon-werf, skep en dit verbind met omgewingsveranderlikes en SSH-sleutels.
Oor die skrywer
Andrew Taylor skep gereedskap vir ontwikkelaars in Pantheon.