ProHoster > Blogs > AdministrÄcija > KÄ savienot GitLab un Pantheon un optimizÄt Drupal un WordPress darbplÅ«smas
KÄ savienot GitLab un Pantheon un optimizÄt Drupal un WordPress darbplÅ«smas
MÅ«su viesis, Pantheon izstrÄdÄtÄju rÄ«ku veidotÄjs, stÄsta par to, kÄ automatizÄt WordPress izvietoÅ”anu, izmantojot GitLab CI/CD.
Š Panteons Es strÄdÄju izstrÄdÄtÄju attiecÄ«bu jomÄ, tÄpÄc vienmÄr meklÄju jaunus veidus, kÄ palÄ«dzÄt WordPress un Drupal izstrÄdÄtÄjiem atrisinÄt automatizÄcijas problÄmas savÄs darbplÅ«smÄs. Lai to izdarÄ«tu, man patÄ«k eksperimentÄt ar jauniem rÄ«kiem un apvienot tos savÄ starpÄ, lai darbotos efektÄ«vi.
Es bieži redzu, ka izstrÄdÄtÄji cÄ«nÄs ar vienu pieturas serveri.
Ir patÄ«kami gaidÄ«t savu kÄrtu, lai izmantotu starpposma serveri vai nosÅ«tÄ«tu klientiem URL ar piezÄ«mi: āSkatieties Å”eit, bet vÄl neskatieties Å”eit.ā
Multidev vides - viens no forÅ”ajiem Pantheon rÄ«kiem - atrisina Å”o problÄmu, jo ar tiem jÅ«s varat izveidot vidi Git filiÄlÄm pÄc pieprasÄ«juma. Katrai multidevu videi ir savs URL un datu bÄze, lai izstrÄdÄtÄji varÄtu strÄdÄt klusi, pÄrbaudÄ«t kvalitÄti un saÅemt apstiprinÄjumu, neuzkÄpjot viens otram uz kÄjÄm.
TaÄu Pantheon nav rÄ«ku versiju kontrolei vai nepÄrtrauktai integrÄcijai un izvietoÅ”anai (CI/CD). Bet tÄ ir elastÄ«ga platforma, ar kuru jÅ«s varat integrÄt jebkurus rÄ«kus.
Es arÄ« pamanÄ«ju, ka komandas izmanto noteiktus rÄ«kus izstrÄdei un dažÄdus montÄžai un izvietoÅ”anai.
PiemÄram, tiem ir dažÄdi rÄ«ki versiju kontrolei un CI/CD. Lai rediÄ£Ätu kodu un diagnosticÄtu problÄmas, jums ir jÄgroza un jÄpÄrslÄdzas starp rÄ«kiem.
uz GitLab ir pilns izstrÄdes rÄ«ku komplekts: versiju kontrolei, biļetÄm, sapludinÄÅ”anas pieprasÄ«jumiem, klasÄ labÄkais CI/CD konveijers, konteineru reÄ£istrs un tamlÄ«dzÄ«gi. Es vÄl neesmu saskÄries ar lietojumprogrammu, kas piedÄvÄtu tik daudz, lai pÄrvaldÄ«tu jÅ«su izstrÄdes darbplÅ«smu.
Man patÄ«k automatizÄcija, tÄpÄc es uzzinÄju, kÄ savienot Pantheon ar GitLab, lai GitLab galvenÄs filiÄles saistÄ«bas tiktu izvietotas Pantheon galvenajÄ izstrÄdes vidÄ. Un apvienoÅ”anas pieprasÄ«jumi pakalpojumÄ GitLab var izveidot un izvietot kodu Pantheon multidev vidÄs.
Å ajÄ apmÄcÄ«bÄ es jums pastÄstÄ«Å”u, kÄ izveidot savienojumu starp GitLab un Pantheon un optimizÄt jÅ«su WordPress un Drupal darbplÅ«smu.
Protams, ir iespÄjams, spogulis GitLab repozitorijs, bet mÄs darÄ«sim visu ar savÄm rokÄm, lai iedziļinÄtos GitLab CI un nÄkotnÄ izmantojiet Å”o rÄ«ku ne tikai izvietoÅ”anai.
Ievads
Lai veiktu Å”o ziÅu, jums ir jÄsaprot, ka Pantheon katru vietni sadala trÄ«s elementos: kodÄ, datu bÄzÄ un failos.
KodÄ ir iekļauti CMS faili, piemÄram, WordPress kodols, spraudÅi un motÄ«vi. Å ie faili tiek pÄrvaldÄ«ti Git krÄtuves, ko mitina Pantheon, kas nozÄ«mÄ, ka mÄs varam izvietot kodu no GitLab uz Pantheon, izmantojot Git.
Faili Pantheon ir multivides faili, tas ir, vietnes attÄli. Parasti tos augÅ”upielÄdÄ lietotÄji, un Git tos ignorÄ.
Mans projekts Pantheon un GitLab saucas pantheon-gitlab-blog-demo. Projekta nosaukumam ir jÄbÅ«t unikÄlam. Å eit mÄs strÄdÄsim ar WordPress vietni. JÅ«s varat lietot Drupal, taÄu jums bÅ«s jÄmaina dažas lietas.
Ja rokas niez kaut ko mainÄ«t, piemÄram, noÅemt vai pievienot spraudÅus, esiet pacietÄ«gi. Vietne vÄl nav savienota ar GitLab, un mÄs vÄlamies, lai visas koda izmaiÅas tiktu veiktas caur GitLab.
Kad esam instalÄjuÅ”i WordPress, atgriezieties Pantheon vietnes informÄcijas panelÄ« un mainiet izstrÄdes režīmu uz Git.
SÄkotnÄjÄ apÅemÅ”anÄs GitLab
Tagad jums ir jÄpÄrsÅ«ta sÄkotnÄjais WordPress kods no Pantheon vietnes uz GitLab. Lai to izdarÄ«tu, mÄs lokÄli klonÄjam kodu no Pantheon vietnes Git repozitorija un pÄc tam nosÅ«tÄm to uz GitLab repozitoriju.
Tagad mainÄ«simies git remote originlai norÄdÄ«tu uz GitLab nevis Pantheon. To var izdarÄ«t ŠŗŠ¾Š¼Š°Š½Š“Š¾Š¹ git remote.
Dodamies uz GitLab projektu un kopÄjiet repozitorija URL no nolaižamÄs izvÄlnes Klons projekta informÄcijas lapÄ. IzvÄlÄsimies opciju KlonÄt ar SSH, jo SSH atslÄgu jau esam konfigurÄjuÅ”i.
PÄc noklusÄjuma git remote koda repozitorija vietÄjai kopijai - origin. To var mainÄ«t c git remote set-url origin [URL ŃŠµŠæŠ¾Š·ŠøŃŠ¾ŃŠøŃ GitLab], kur iekavu vietÄ ievadÄm faktisko URL.
Visbeidzot, mÄs palaižam git push origin master --forcelai pÄrsÅ«tÄ«tu WordPress kodu no Pantheon uz GitLab.
Opcija āforce ir nepiecieÅ”ama tikai vienu reizi. PÄc tam komandÄs git push tas nebÅ«s GitLab.
AkreditÄcijas datu un mainÄ«go iestatÄ«Å”ana
Atcerieties, kÄ mÄs lokÄli pievienojÄm SSH atslÄgu, lai pieteiktos Pantheon un GitLab? SSH marÄ·ieri var izmantot, lai autorizÄtu GitLab un Pantheon.
Tagad mÄs pabeigsim pirmÄs divas darbÄ«bas: Izveidosim jaunu SSH atslÄgu pÄri lokÄli ar ssh-keygen un pievienosim privÄto atslÄgu kÄ mainÄ«go projektam.
Tad jautÄsim SSH_PRIVATE_KEY kÄ GitLab CI/CD vides mainÄ«gais projekta iestatÄ«jumos.
TreÅ”ajÄ un ceturtajÄ darbÄ«bÄ mÄs izveidosim failu .gitlab-ci.yml ar Å”Ädu saturu:
PagaidÄm neapstiprinÄsim failu .gitlab-ci.yml, tad jums bÅ«s jÄpievieno kaut kas cits.
Tagad mÄs veicam piekto soli un pievienojiet publisko atslÄgu, ko izveidojÄt pirmajÄ darbÄ«bÄ, pakalpojumiem, kuriem jums nepiecieÅ”ama piekļuve bÅ«vÄÅ”anas vidÄ.
MÅ«su gadÄ«jumÄ mÄs vÄlamies piekļūt Pantheon no GitLab. MÄs izpildÄm norÄdÄ«jumus Pantheon dokumentÄ par SSH atslÄgas pievienoÅ”ana Pantheon un veiciet Å”o darbÄ«bu.
Atcerieties: privÄtais SSH atrodas GitLab, atvÄrtais SSH atrodas PantheonÄ.
IestatÄ«sim vÄl dažus vides mainÄ«gos. Pirmo sauc PANTHEON_SITE. TÄ vÄrtÄ«ba ir Pantheon vietnes nosaukums jÅ«su datorÄ.
IekÄrtas nosaukums ir norÄdÄ«ts komandas Clone with Git beigÄs. JÅ«s jau esat lokÄli klonÄjis vietni, tÄpÄc tas bÅ«s vietÄjÄs krÄtuves direktorija nosaukums.
TÄlÄk iestatÄ«sim vides mainÄ«go PANTHEON_GIT_URL. Å is ir Git repozitorija URL vietnei Pantheon, kuru mÄs jau esam izmantojuÅ”i.
Ievadiet tikai SSH repozitorija URL, bez git clone un vietnes nosaukums uz maŔīnas beigÄs.
FÅ«. Tas ir izdarÄ«ts, tagad mÄs varam pabeigt failu .gitlab-ci.yml.
Izveidojiet izvietoŔanas uzdevumu
Tas, ko mÄs sÄkotnÄji darÄ«sim ar GitLab CI, ir ļoti lÄ«dzÄ«gs tam, ko mÄs iepriekÅ” darÄ«jÄm ar Git krÄtuvÄm. TaÄu Å”oreiz pievienosim Pantheon repozitoriju kÄ otru attÄlo Git avotu un pÄc tam nosÅ«tÄ«sim kodu no GitLab uz Pantheon.
Lai to izdarÄ«tu, konfigurÄsim posmsdeploy Šø uzdevumsdeploy:dev, jo mÄs izvietosim Panteona izstrÄdes vidÄ. IegÅ«tais fails .gitlab-ci.yml izskatÄ«sies Å”Ädi:
MainÄ«gie SSH_PRIVATE_KEY, PANTHEON_SITE Šø PANTHEON_GIT_URL vajadzÄtu izskatÄ«ties pazÄ«stami ā mÄs Å”os vides mainÄ«gos iestatÄ«jÄm agrÄk. Izmantojot Å”os mainÄ«gos, mÄs varÄsim izmantot failÄ esoÅ”Äs vÄrtÄ«bas .gitlab-ci.yml vairÄkas reizes, un tie bÅ«s jÄatjaunina tikai vienuviet.
Visbeidzot pievienojiet, veiciet un nosÅ«tiet failu .gitlab-ci.yml vietnÄ GitLab.
Izvietojuma pÄrbaude
Ja visu izdarÄ«jÄm pareizi, uzdevums deploy:dev veiksmÄ«gi darbosies GitLab CI/CD un iesniegs apÅemÅ”anos .gitlab-ci.yml PanteonÄ. PaskatÄ«simies.
Notiek sapludinÄÅ”anas pieprasÄ«juma pavedienu sÅ«tÄ«Å”ana uz Pantheon
Å eit mÄs izmantosim manu iecienÄ«tÄko Panteona funkciju multidev, kur pÄc pieprasÄ«juma varat izveidot papildu Pantheon vides Git filiÄlÄm.
Piekļuve multidevÄjam ir ierobežota, tÄpÄc Å”o sadaļu var izlaist. Bet, ja jums ir piekļuve, varat nopietni palielinÄt produktivitÄti, iestatot automÄtisku multidev vides izveidi Pantheon no GitLab sapludinÄÅ”anas pieprasÄ«jumiem.
Vispirms izveidosim jaunu Git filiÄli lokÄli, izmantojot git checkout -b multidev-support. Tagad atkal kaut ko mainÄ«sim .gitlab-ci.yml.
Man patÄ«k Pantheon vides nosaukumÄ iekļaut sapludinÄÅ”anas pieprasÄ«juma numuru. PiemÄram, pirmais sapludinÄÅ”anas pieprasÄ«jums ir mr-1, otrais - mr-2 utt.
ApvienoÅ”anas pieprasÄ«jums mainÄs, tÄpÄc mums ir dinamiski jÄnosaka Panteona filiÄļu nosaukumi. Tas ir vienkÄrÅ”i GitLab ā jums vienkÄrÅ”i jÄizmanto iepriekÅ” noteikti vides mainÄ«gie.
Varam Åemt $CI_MERGE_REQUEST_IIDlai norÄdÄ«tu sapludinÄÅ”anas pieprasÄ«juma numuru. Pielietosim to visu kopÄ ar globÄlajiem vides mainÄ«gajiem, ko norÄdÄ«jÄm iepriekÅ”, un faila beigÄs pievienosim jaunu uzdevumu deploy:multidev .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
Tas bÅ«s lÄ«dzÄ«gs mÅ«su uzdevumam deploy:dev, tikai filiÄle tiek nosÅ«tÄ«ta uz Panteonu, nevis uz master.
MÄs esam pievienojuÅ”i un izveidojuÅ”i atjauninÄto failu .gitlab-ci.yml, un tagad virzÄ«sim jaunu filiÄli GitLab ar git push -u origin multidev-support.
Tagad izveidosim jaunu sapludinÄÅ”anas pieprasÄ«jumu no filiÄles multidev-supportnospiežot Izveidot sapludinÄÅ”anas pieprasÄ«jumu.
Kad ir izveidots sapludinÄÅ”anas pieprasÄ«jums, mÄs aplÅ«kojam, kÄ tiek izpildÄ«ts CI/CD uzdevums deploy:multidev.
Paskaties, uz Panteonu ir nosÅ«tÄ«ts jauns pavediens. Bet, ja mÄs pÄrejam uz multidev sadaļu Pantheon vietnes informÄcijas panelÄ«, mÄs tur neredzÄsim jauno vidi.
Apskatīsim sadaļu Git Branches.
RezultÄtÄ mÅ«su pavediens mr-1 nokļuva PanteonÄ. Veidosim vidi no zara mr-1.
Esam izveidojuÅ”i multidev vidi, tagad atgriezÄ«simies GitLab un apskatÄ«sim sadaļu DarbÄ«bas > Vides. MÄs redzÄsim ierakstus par dev Šø mr-1.
Tas ir tÄpÄc, ka mÄs pievienojÄm ierakstu environment Ar nosaukumu name Šø url CI/CD uzdevumos. Ja noklikŔķinÄsim uz atvÄrtÄs vides ikonas, mÄs tiksim novirzÄ«ti uz Pantheon multidev vides URL.
AutomatizÄjiet multidevu izveidi
PrincipÄ jÅ«s varat apstÄties Å”eit un vienkÄrÅ”i atcerÄties izveidot multidev vidi katram sapludinÄÅ”anas pieprasÄ«jumam, taÄu Å”o procesu var automatizÄt.
Pantheon ir komandrindas rÄ«ks Gala stacija, kur jÅ«s varat strÄdÄt ar platformu automÄtiski. Terminus ļauj izveidot multidev vides no komandrindas ā ideÄli piemÄrots GitLab CI.
Lai to pÄrbaudÄ«tu, mums ir nepiecieÅ”ams jauns sapludinÄÅ”anas pieprasÄ«jums. Izveidosim jaunu filiÄli, izmantojot git checkout -b auto-multidev-creation.
Lai izmantotu Terminus GitLab CI/CD uzdevumos, ir nepiecieÅ”ams maŔīnas marÄ·ieris autentifikÄcijai ar Terminus un konteinera attÄls ar Terminus.
Panteona maŔīnas marÄ·iera izveide, saglabÄjiet to droÅ”Ä vietÄ un pievienojiet to kÄ globÄlo vides mainÄ«go GitLab ar nosaukumu PANTHEON_MACHINE_TOKEN.
Ja esat aizmirsis, kÄ pievienot GitLab vides mainÄ«gos, atgriezieties tur, kur mÄs definÄjÄm PANTHEON_SITE.
Docker faila izveide, izmantojot Terminus
Ja neizmantojat Docker vai jums nepatÄ«k faili Dockerfile, uzÅemiet manu attÄlu registry.gitlab.com/ataylorme/pantheon-gitlab-blog-demo:latest un izlaidiet Å”o sadaļu.
GitLab ir konteineru reÄ£istrs, kur mÄs varam izveidot un ievietot mÅ«su projekta Dockerfile. Izveidosim Dockerfile ar Terminus, lai strÄdÄtu ar Pantheon.
Terminus ir PHP komandrindas rÄ«ks, tÄpÄc sÄksim ar PHP attÄlu. Es instalÄju Terminus caur Composer, tÄpÄc izmantoÅ”u oficiÄlais Docker Composer attÄls. MÄs radÄm Dockerfile vietÄjÄ repozitorija direktorijÄ ar Å”Ädu saturu:
# 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"
Izpildiet sadaÄ¼Ä sniegtos norÄdÄ«jumus par attÄlu salikÅ”anu un nosÅ«tÄ«Å”anu Veidojiet un virziet attÄlus Š² konteineru reÄ£istra dokumentÄcijalai savÄktu attÄlu no Dockerfile un nospiediet to uz GitLab.
Sadaļas atvÄrÅ”ana reÄ£istra projektÄ GitLab. Ja viss noritÄja pÄc plÄna, mÅ«su tÄls bÅ«s klÄt. Pierakstiet saiti uz attÄla tagu ā tÄ mums ir nepiecieÅ”ama failam .gitlab-ci.yml.
Sadaļa script problÄmÄ deploy:multidev sÄk augt, tÄpÄc pÄrvietosim to uz atseviŔķu failu. Izveidojiet jaunu failu 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
Skripts atrodas privÄtÄ direktorijÄ un neļauj tÄ«mekļa piekļuvi Panteonam. Mums ir skripts mÅ«su multidevu loÄ£ikai. Tagad atjauninÄsim sadaļu deploy:multidev failu .gitlab-ci.ymllai tas izrÄdÄ«tos Å”Ädi:
Mums ir jÄpÄrliecinÄs, ka mÅ«su uzdevumi tiek veikti izveidotajÄ pielÄgotajÄ attÄlÄ, tÄpÄc pievienosim definÄ«ciju image no reÄ£istra URL uz .gitlab-ci.yml. RezultÄtÄ mÄs nonÄcÄm pie Å”Äda faila .gitlab-ci.yml:
Pievienot, veikt un nosÅ«tÄ«t private/multidev-deploy.sh Šø .gitlab-ci.yml. Tagad mÄs atgriežamies pie GitLab un gaidÄm, lÄ«dz tiks pabeigts CI/CD uzdevums. Esiet pacietÄ«gs: multidev izveide var ilgt vairÄkas minÅ«tes.
PÄc tam apskatÄ«sim multidevu sarakstu PanteonÄ. Ak brÄ«nums! Multidev vide mr-2 jau Å”eit.
SecinÄjums
Manai komandai bija daudz jautrÄ«bas, kad sÄkÄm automÄtiski atvÄrt sapludinÄÅ”anas pieprasÄ«jumus un izveidot vidi.
Izmantojot jaudÄ«gos GitLab un Pantheon rÄ«kus, varat automÄtiski savienot GitLab ar Pantheon.
TÄ kÄ mÄs izmantojam GitLab CI/CD, mÅ«su darbplÅ«smai bÅ«s iespÄja augt. Å eit ir dažas idejas, kÄ sÄkt darbu:
Pievienojiet izveides soli.
Pievienojiet automÄtisko testÄÅ”anu.
Pievienojiet uzdevumu, lai nodroÅ”inÄtu koda standartu ievÄroÅ”anu.
MÄs Pantheon esam paveikuÅ”i labu darbu pie mÅ«su 2. versijas spraudnis Terminus veidoÅ”anas rÄ«kiem ar GitLab atbalstu. Ja nevÄlaties rÅ«pÄties par katra projekta iestatÄ«jumiem, izmÄÄ£iniet Å”o spraudni un palÄ«dziet mums pÄrbaudÄ«t v2 beta versiju. Terminus komandai build:project:create Jums ir nepiecieÅ”ams tikai Pantheon marÄ·ieris un GitLab marÄ·ieris. ViÅa izvietos vienu no paraugprojektiem ar Composer un automatizÄto testÄÅ”anu, izveidos jaunu projektu GitLab, jaunÄ Pantheon vietnÄ, un savienos tos, izmantojot vides mainÄ«gos un SSH atslÄgas.
Par Autors
EndrjÅ« Teilors izveido rÄ«kus izstrÄdÄtÄjiem Panteons.