ProHoster > blog > Amministrazzjoni > Kif Tqabbad GitLab u Pantheon u Ottimizza l-Flussi tax-Xogħol ta' Drupal u WordPress
Kif Tqabbad GitLab u Pantheon u Ottimizza l-Flussi tax-Xogħol ta' Drupal u WordPress
Il-kreatur tal-għodda tal-iżviluppatur mistiedna tagħna f'Pantheon jitkellem dwar kif awtomat l-iskjeramenti ta 'WordPress bl-użu ta' GitLab CI/CD.
В Pantheon Naħdem fir-relazzjonijiet tal-iżviluppaturi, għalhekk jien dejjem infittex modi ġodda biex ngħin lill-iżviluppaturi ta 'WordPress u Drupal isolvu problemi ta' awtomazzjoni fil-flussi tax-xogħol tagħhom. Biex tagħmel dan, inħobb nesperimenta b'għodod ġodda u ngħaqqadhom ma 'xulxin biex naħdem b'mod effettiv.
Spiss nara żviluppaturi jissieltu ma 'server ta' staging wieħed.
Huwa ta’ pjaċir kbir li tistenna min-naħa tiegħek biex tuża server intermedju jew tibgħat lill-klijenti URL bin-nota: "Ħares hawn, imma s'issa tħaresx hawn."
Ambjenti multidev - waħda mill-għodod jibred Pantheon - issolvi din il-problema, għaliex magħhom tista 'toħloq ambjenti għall-fergħat Git fuq talba. Kull ambjent multidev għandu l-URL u d-database tiegħu stess, sabiex l-iżviluppaturi jkunu jistgħu jaħdmu bil-kwiet, jiċċekkjaw il-kwalità, u jiksbu l-approvazzjoni mingħajr ma jirfsu fuq sieq xulxin.
Iżda Pantheon m'għandux għodda għall-kontroll tal-verżjoni jew integrazzjoni u skjerament kontinwu (CI/CD). Iżda hija pjattaforma flessibbli li biha tista 'tintegra kwalunkwe għodda.
Innotajt ukoll li t-timijiet jużaw ċerti għodod għall-iżvilupp, u oħrajn differenti għall-assemblaġġ u l-iskjerament.
Pereżempju, għandhom għodod differenti għall-kontroll tal-verżjoni u CI/CD. Int trid tiddejjaq u taqleb bejn l-għodod biex teditja l-kodiċi u tiddijanjostika l-problemi.
Fuq GitLab hemm sett sħiħ ta 'għodod ta' żvilupp: għall-kontroll tal-verżjoni, biljetti, talbiet ta 'għaqda, pipeline CI/CD tal-aħjar fil-klassi, reġistru tal-kontejners, u kollox bħal dak. Għadni ma ltqajtx ma' applikazzjoni li toffri tant biex timmaniġġja l-fluss tax-xogħol tal-iżvilupp tiegħek.
Inħobb l-awtomazzjoni, għalhekk tgħallimt kif tgħaqqad Pantheon ma 'GitLab sabiex l-impenji għall-fergħa prinċipali fuq GitLab jiġu skjerati fl-ambjent ta' żvilupp ewlieni f'Pantheon. U t-talbiet għall-għaqda fuq GitLab jistgħu joħolqu u jużaw kodiċi għal ambjenti multidev f'Pantheon.
F'dan it-tutorja, se nmexxik kif tistabilixxi konnessjoni bejn GitLab u Pantheon u nottimizza l-fluss tax-xogħol tiegħek ta' WordPress u Drupal.
Naturalment huwa possibbli, mera repożitorju GitLab, iżda aħna se nagħmlu kollox b'idejna biex wieħed jidħol fih GitLab CI u fil-futur tuża din l-għodda mhux biss għall-iskjerament.
Introduzzjoni
Għal din il-kariga, trid tifhem li Pantheon ikisser kull sit fi tliet elementi: kodiċi, database, u fajls.
Il-kodiċi jinkludi fajls CMS bħall-qalba ta 'WordPress, plugins, u temi. Dawn il-fajls huma ġestiti fi Repożitorji Git, ospitat minn Pantheon, li jfisser li nistgħu niskjeraw kodiċi minn GitLab għal Pantheon ma 'Git.
Fajls fil-Pantheon huma fajls tal-midja, jiġifieri, immaġini għas-sit. Tipikament dawn jittellgħu mill-utenti u Git jinjorahom.
Il-proġett tiegħi fuq Pantheon u GitLab jissejjaħ pantheon-gitlab-blog-demo. L-isem tal-proġett għandu jkun uniku. Hawnhekk se naħdmu ma 'sit WordPress. Tista' tieħu Drupal, iżda ser ikollok bżonn tibdel xi affarijiet.
Jekk idejk qed ħakk biex tbiddel xi ħaġa, pereżempju, neħħi jew iżżid plugins, kun paċenzja. Is-sit għadu mhux konness ma' GitLab, u rridu li l-bidliet kollha fil-kodiċi jgħaddu minn GitLab.
Ladarba ninstallaw WordPress, mur lura għad-dashboard tal-websajt Pantheon u biddel il-mod ta 'żvilupp għal Git.
Impenn inizjali fuq GitLab
Issa għandek bżonn tittrasferixxi l-kodiċi inizjali ta 'WordPress mis-sit ta' Pantheon għal GitLab. Biex tagħmel dan, aħna nikklonu l-kodiċi mir-repożitorju Git tas-sit Pantheon lokalment, u mbagħad nibagħtu lir-repożitorju GitLab.
Issa ejja nbiddlu git remote originbiex tipponta lejn GitLab minflok Pantheon. Jista 'jsir командой git remote.
Ejja mmorru għall-proġett GitLab u kkopja l-URL tar-repożitorju mill-dropdown Klonu fuq il-paġna tad-dettalji tal-proġett. Ejja nagħżlu l-għażla Clone with SSH, għax diġà kkonfigurajna ċ-ċavetta SSH.
Permezz ta 'default git remote għal kopja lokali tar-repożitorju tal-kodiċi - origin. Dan jista' jinbidel c git remote set-url origin [URL репозитория GitLab], fejn minflok il-parentesi nidħlu l-URL attwali.
Fl-aħħarnett, inniedu git push origin master --forcebiex timbotta l-kodiċi WordPress minn Pantheon għal GitLab.
L-għażla –force hija meħtieġa darba biss. Imbagħad fi timijiet git push mhux se jkun fuq GitLab.
Twaqqif ta 'kredenzjali u varjabbli
Ftakar kif żidna ċavetta SSH lokalment biex tidħol f'Pantheon u GitLab? It-token SSH jista 'jintuża biex jawtorizza GitLab u Pantheon.
Issa se nlestu l-ewwel żewġ passi: Ejja noħolqu par ta 'ċavetta SSH ġdid lokalment ma' ssh-keygen u żid iċ-ċavetta privata bħala varjabbli mal-proġett.
Imbagħad aħna nistaqsu SSH_PRIVATE_KEY kif GitLab CI/CD varjabbli ambjentali fis-settings tal-proġett.
Fit-tielet u r-raba 'passi aħna noħolqu fajl .gitlab-ci.yml b'kontenut bħal dan:
Ejja ma nikkommettux il-fajl s'issa .gitlab-ci.yml, imbagħad ikollok bżonn iżżid xi ħaġa oħra magħha.
Issa nwettqu l-ħames pass u żid iċ-ċavetta pubblika li ħloqt fl-ewwel pass mas-servizzi li għandek bżonn aċċess għalihom fl-ambjent tal-bini.
Fil-każ tagħna, irridu naċċessaw Pantheon minn GitLab. Aħna nsegwu l-istruzzjonijiet fid-dokument Pantheon fuq iżżid ċavetta SSH għal Pantheon u wettaq dan il-pass.
Ftakar: SSH privat jinsab f'GitLab, SSH miftuħ jinsab fil-Pantheon.
Ejja nwaqqfu ftit aktar varjabbli ambjentali. L-ewwel wieħed jissejjaħ PANTHEON_SITE. Il-valur tiegħu huwa l-isem tas-sit Pantheon fuq il-magna tiegħek.
L-isem fuq il-magna huwa elenkat fl-aħħar tal-kmand tal-Klonu bil-Git. Int diġà kklonajt is-sit lokalment, għalhekk dan se jkun l-isem tad-direttorju tar-repożitorju lokali.
Sussegwentement, ejja nwaqqfu l-varjabbli ambjentali PANTHEON_GIT_URL. Dan huwa l-URL tar-repożitorju Git għas-sit Pantheon li diġà użajna.
Daħħal biss l-URL tar-repożitorju SSH, mingħajr git clone u l-isem tas-sit fuq il-magna fl-aħħar.
Phew. Dak lest, issa nistgħu nispiċċaw il-fajl tagħna .gitlab-ci.yml.
Oħloq kompitu ta 'skjerament
Dak li inizjalment se nkunu qed nagħmlu ma 'GitLab CI huwa simili ħafna għal dak li għamilna mar-repożitorji Git fil-passat. Iżda din id-darba, ejja nżidu r-repożitorju Pantheon bħala t-tieni sors Git remot, u mbagħad imbotta l-kodiċi minn GitLab għal Pantheon.
Biex tagħmel dan, ejja kkonfigurat stadjudeploy и kompitudeploy:dev, għax se niskjeraw fl-ambjent ta 'żvilupp fuq Pantheon. Il-fajl li jirriżulta .gitlab-ci.yml se tidher bħal din:
Varjabbli SSH_PRIVATE_KEY, PANTHEON_SITE и PANTHEON_GIT_URL għandhom jidhru familjari - aħna waqqafna dawn il-varjabbli ambjentali qabel. B'dawn il-varjabbli se nkunu nistgħu nużaw il-valuri fil-fajl .gitlab-ci.yml ħafna drabi, u jkunu jeħtieġu biss li jiġu aġġornati f'post wieħed.
Fl-aħħarnett, żid, tikkommetti u ibgħat il-fajl .gitlab-ci.yml fuq GitLab.
Iċċekkja l-iskjerament
Jekk għamilna kollox b'mod korrett, il-kompitu deploy:dev se taħdem b'suċċess f'GitLab CI/CD u tissottometti impenn .gitlab-ci.yml fil-Panteon. Ejja nagħtu ħarsa.
Tibgħat il-ħjut tat-talba għall-għaqda lil Pantheon
Hawnhekk se nużaw il-karatteristika favorita tiegħi Pantheon − multidev, fejn tista 'toħloq ambjenti Pantheon addizzjonali għall-fergħat Git fuq talba.
L-aċċess għal multidev huwa limitat, għalhekk din it-taqsima tista' tinqabeż. Imma jekk għandek aċċess, tista 'żżid serjament il-produttività billi twaqqaf ħolqien awtomatiku ta' ambjenti multidev fuq Pantheon minn talbiet ta 'għaqda ta' GitLab.
L-ewwel ejja nagħmlu fergħa Git ġdida lokalment bl-użu git checkout -b multidev-support. Issa ejja nbiddlu xi ħaġa mill-ġdid ġewwa .gitlab-ci.yml.
Inħobb ninkludi n-numru tat-talba għall-għaqda fl-isem tal-ambjent Pantheon. Pereżempju, l-ewwel talba għall-għaqda hija mr-1, it-tieni - mr-2 eċċ.
It-talba għall-għaqda tinbidel, għalhekk għandna bżonn niddeterminaw b'mod dinamiku l-ismijiet tal-fergħat Pantheon. Huwa faċli fuq GitLab - għandek bżonn biss tuża varjabbli ambjentali predefiniti.
Nistgħu nieħdu $CI_MERGE_REQUEST_IIDbiex tispeċifika n-numru tat-talba għall-għaqda. Ejja napplikaw dan kollu flimkien mal-varjabbli ambjentali globali li speċifikajna qabel u żid kompitu ġdid deploy:multidev fl-aħħar tal-fajl .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
Se jkun simili għall-kompitu tagħna deploy:dev, il-fergħa biss tintbagħat lil Pantheon, mhux lil master.
Żidna u kkommettejna l-fajl aġġornat .gitlab-ci.yml, u issa ejja nimbotta fergħa ġdida għal GitLab bi git push -u origin multidev-support.
Issa ejja noħolqu talba ġdida għall-għaqda mill-fergħa multidev-supportbilli tagħfas Oħloq talba għall-għaqda.
Wara li ħloqna talba għall-għaqda, inħarsu lejn kif jitwettaq il-kompitu CI/CD deploy:multidev.
Ara, ħajt ġdid intbagħat lil Pantheon. Imma jekk immorru fit-taqsima multidev fuq id-dashboard tas-sit Pantheon, mhux se naraw l-ambjent il-ġdid hemmhekk
Ejja nħarsu lejn it-taqsima tal-Git Branches.
Bħala riżultat, il-ħajta tagħna mr-1 waslet għall Pantheon. Ejja noħolqu ambjent minn fergħa mr-1.
Ħloqna ambjent multidev, issa ejja mmorru lura għal GitLab u nħarsu lejn it-taqsima Operazzjonijiet > Ambjenti. Se naraw entrati għal dev и mr-1.
Dan għaliex żidna dħul environment Bl-isem name и url f'kompiti CI/CD. Jekk nikklikkjaw fuq l-ikona ta 'l-ambjent miftuħ, niġu meħuda għall-URL ta' l-ambjent multidev fuq Pantheon.
Awtomatizza l-ħolqien ta' multidev
Fil-prinċipju, tista 'tieqaf hawn u ftakar biss li toħloq ambjent multidev għal kull talba għall-għaqda, iżda dan il-proċess jista' jiġi awtomatizzat.
Pantheon għandu għodda tal-linja tal-kmand Terminus, fejn tista 'taħdem mal-pjattaforma awtomatikament. Terminus jippermettilek li toħloq ambjenti multidev mil-linja tal-kmand - ideali għal GitLab CI.
Neħtieġu talba ġdida għall-għaqda biex nittestjaw dan. Ejja noħolqu fergħa ġdida bl-użu git checkout -b auto-multidev-creation.
Biex tuża Terminus fil-kompiti GitLab CI/CD, għandek bżonn token tal-magna għall-awtentikazzjoni ma 'Terminus u immaġni ta' kontenitur ma 'Terminus.
Jekk insejt kif iżżid varjabbli ambjentali GitLab, mur lura fejn iddefinijna PANTHEON_SITE.
Ħolqien ta 'Dockerfile ma' Terminus
Jekk ma tużax Docker jew ma tħobbx il-fajls Dockerfile, ħu l-immaġni tiegħi registry.gitlab.com/ataylorme/pantheon-gitlab-blog-demo:latest u aqbeż din it-taqsima.
GitLab għandu reġistru tal-kontejners, fejn nistgħu nibnu u npoġġu l-Dockerfile għall-proġett tagħna. Ejja noħolqu Dockerfile b'Terminus biex naħdmu ma' Pantheon.
Terminus hija għodda tal-linja tal-kmand PHP, allura ejja nibdew bl-immaġni PHP. Qed ninstalla Terminus permezz tal-Kompożitur, għalhekk ser nuża immaġni uffiċjali ta' Docker Composer. Noħolqu Dockerfile fid-direttorju tar-repożitorju lokali bil-kontenut li ġej:
# 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"
Segwi l-istruzzjonijiet biex tgħaqqad u tibgħat immaġini mit-taqsima Ibni u timbotta immaġini в dokumentazzjoni tar-reġistru tal-kontejnersbiex tiġbor immaġini minn Dockerfile u imbottah għal GitLab.
Iftaħ it-taqsima Reġistru fil-proġett GitLab. Jekk kollox mar skont il-pjan, l-immaġni tagħna tkun hemm. Ikteb link għat-tikketta tal-immaġni - għandna bżonnha għall-fajl .gitlab-ci.yml.
Sezzjoni script fil-problema deploy:multidev qed jibda jikber, mela ejja nimxu għal fajl separat. Oħloq fajl ġdid 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
L-iskript jinsab f'direttorju privat u ma jippermettix aċċess għall-web għal Pantheon. Għandna skript għal-loġika multidev tagħna. Ejja issa naġġornaw it-taqsima deploy:multidev fajl .gitlab-ci.ymlsabiex jirriżulta hekk:
Għandna bżonn niżguraw li l-kompiti tagħna jitwettqu fl-immaġni personalizzata maħluqa, allura ejja nżidu definizzjoni image mill-URL tar-reġistru għal .gitlab-ci.yml. Bħala riżultat, spiċċajna b'fajl bħal dan .gitlab-ci.yml:
Żid, ikkometti u ibgħat private/multidev-deploy.sh и .gitlab-ci.yml. Issa nerġgħu lura għal GitLab u nistennew li l-kompitu CI/CD jitlesta. Kun paċenzjuż: multidev jista' jieħu diversi minuti biex jinħoloq.
Imbagħad immorru nħarsu lejn il-lista multidev fuq Pantheon. Oh miraklu! Ambjent multidev mr-2 diġà hawn.
Konklużjoni
It-tim tiegħi ħa gost ħafna aktar meta bdejna niftħu talbiet għall-għaqda u noħolqu ambjenti awtomatikament.
Bl-għodda qawwija ta 'GitLab u Pantheon, tista' tikkonnettja GitLab ma' Pantheon awtomatikament.
Peress li nużaw GitLab CI/CD, il-fluss tax-xogħol tagħna se jkollu spazju biex jikber. Hawn huma ftit ideat biex tibda:
Żid pass tal-bini.
Żid ittestjar awtomatizzat.
Żid kompitu biex tiżgura li l-istandards tal-kodiċi jintlaħqu.
Aħna fil-Pantheon għamilna xogħol tajjeb fuq il-verżjoni 2 tagħna plugin għall-għodod tal-bini ta' Terminus bl-appoġġ GitLab. Jekk ma tridx tolqot bl-issettjar għal kull proġett, ipprova dan il-plugin u għinna nittestjaw il-v2 beta. Għat-tim Terminus build:project:create Għandek bżonn biss token Pantheon u token GitLab. Hija se tiskjera wieħed mill-proġetti ta 'kampjun ma' Composer u ttestjar awtomatizzat, toħloq proġett ġdid f'GitLab, sit ġdid ta 'Pantheon, u tgħaqqadhom billi tuża varjabbli ambjentali u ċwievet SSH.
Dwar l-awtur
Andrew Taylor joħloq għodod għall-iżviluppaturi fil Pantheon.