ProHoster > Blog > Rêveberî > Meriv çawa GitLab û Pantheon girêdide û Karûbarên Drupal û WordPress Optimîze dike
Meriv çawa GitLab û Pantheon girêdide û Karûbarên Drupal û WordPress Optimîze dike
Afirînerê me yê amûrên pêşdebirkerê mêvan li Pantheon diaxive ka meriv çawa bi karanîna GitLab CI/CD vesazkirina WordPress-ê otomatîk dike.
В pantheon Ez di têkiliyên pêşdebiran de dixebitim, ji ber vê yekê ez her gav li rêyên nû digerim ku ji pêşdebirên WordPress û Drupal re bibe alîkar ku di rêyên xebata xwe de pirsgirêkên xweseriyê çareser bikin. Ji bo vê yekê, ez dixwazim amûrên nû biceribînim û wan bi hevûdu re bikim da ku bi bandor bixebitim.
Ez pir caran dibînim ku pêşdebiran bi serverek yekane re têdikoşin.
Kêfxweş e ku meriv li benda dora we bimîne ku hûn serverek navber bikar bînin an ji xerîdaran URLek bi navnîşê bişînin: "Li vir binihêrin, lê hîna li vir nenihêrin."
derdorên Multidev - yek ji amûrên xweş ên Pantheon - vê pirsgirêkê çareser dike, ji ber ku bi wan re hûn dikarin li gorî daxwazê ji bo şaxên Git hawîrdoran biafirînin. Her hawîrdora multidev URL û databasa xwe heye, ji ber vê yekê pêşdebiran dikarin bêdeng bixebitin, kalîteyê kontrol bikin, û erêkirinê bistînin bêyî ku li ser tiliyên hevûdu bikevin.
Lê Pantheon ji bo kontrolkirina guhertoyê an yekbûn û bicîhkirina domdar (CI/CD) amûr tune. Lê ew platformek maqûl e ku hûn dikarin her amûrek pê re yek bikin.
Di heman demê de min bala xwe dayê ku tîm ji bo pêşkeftinê hin amûran bikar tînin, û yên cûda jî ji bo komkirin û bicîhkirinê bikar tînin.
Mînakî, wan ji bo kontrolkirina guhertoyê û CI/CD amûrên cihêreng hene. Pêdivî ye ku hûn li dora xwe bizivirin û di navbera amûran de veguherînin da ku kodê biguherînin û pirsgirêkan teşhîs bikin.
li ser GitLab komek bêkêmasî ya amûrên pêşkeftinê hene: ji bo kontrolkirina guhertoyê, bilêtan, daxwazên hevgirtinê, boriyek CI/CD-ê ya herî baş, qeydek konteynerê, û her tiştê mîna wê. Ez hîna rast nehatime serîlêdanek ku ji bo birêvebirina xebata pêşkeftina we ewqas pir pêşkêşî dike.
Ez ji otomasyonê hez dikim, ji ber vê yekê ez fêr bûm ka meriv çawa Pantheon bi GitLab ve girêdide da ku peywirên şaxê sereke yên li ser GitLab li hawîrdora pêşkeftina sereke ya li Pantheon-ê werin bicîh kirin. Û daxwazên yekbûnê yên li ser GitLab dikarin kodê li hawîrdorên multidev ên li Pantheon biafirînin û bicîh bikin.
Di vê tutoriyê de, ez ê rê li we bidim ka meriv çawa têkiliyek di navbera GitLab û Pantheon de saz dike û xebata WordPress û Drupal-a xwe xweşbîn bike.
Helbet gengaz e, neynikê depoya GitLab, lê em ê her tiştî bi destên xwe bikin ku em tê de bikolin GitLab CI û di pêşerojê de vê amûrê ne tenê ji bo bicîhkirinê bikar bînin.
Pîrozbahiyê
Ji bo vê postê, hûn hewce ne ku fêm bikin ku Pantheon her malperê li sê hêmanan vediqetîne: kod, databas û pelan.
Kodê pelên CMS-ê yên wekî bingeha WordPress, pêvek û mijaran vedihewîne. Van pelan di nav de têne rêvebirin Depoyên Git, ku ji hêla Pantheon ve hatî mêvandar kirin, tê vê wateyê ku em dikarin kodê ji GitLab berbi Pantheon-ê bi Git-ê bicîh bikin.
Pelên di Pantheon de pelên medyayê ne, ango wêneyên malperê ne. Bi gelemperî ew ji hêla bikarhêneran ve têne barkirin û Git wan paşguh dike.
Projeya min li ser Pantheon û GitLab tê gotin pantheon-gitlab-blog-demo. Navê projeyê divê yekta be. Li vir em ê bi malperek WordPress re bixebitin. Hûn dikarin Drupal bigirin, lê hûn hewce ne ku hin tiştan biguherînin.
Ger destên we ji bo guheztina tiştek diherikin, mînakî, pêvekan jê bikin an lê zêde bikin, bi sebir bin. Malper hîna bi GitLab ve ne girêdayî ye, û em dixwazin ku hemî guhertinên kodê di nav GitLab re derbas bibin.
Dema ku em WordPress saz bikin, vegerin dashboarda malpera Pantheon û moda pêşkeftinê biguherînin Git.
Peymana destpêkê li ser GitLab
Naha hûn hewce ne ku koda destpêkê ya WordPress ji malpera Pantheon veguhezînin GitLab. Ji bo vê yekê, em kodê ji depoya Git-ê ya malpera Pantheon-ê li herêmî klon dikin, û dûv re wê ji depoya GitLab re dişînin.
Niha em biguherînin git remote originku li şûna Pantheonê GitLab nîşan bide. Ew dikare were kirin командой git remote.
Ka em biçin projeya GitLab û URL-ya depoyê ji pelika Clone ya li ser rûpela hûrguliyên projeyê kopî bikin. Ka em vebijarka Clone bi SSH hilbijêrin, ji ber ku me berê mifteya SSH mîheng kiriye.
by default git remote ji bo kopiyek herêmî ya depoya kodê - origin. Ev dikare were guhertin c git remote set-url origin [URL репозитория GitLab], li ku derê li şûna brûsk em navnîşana rastîn ya URL-ê têkevin.
Di dawiyê de, em dest pê dikin git push origin master --forceda ku koda WordPress-ê ji Pantheon berbi GitLab bikişîne.
Vebijarka -hêz tenê carekê hewce ye. Piştre di tîmên git push ew ê ne li ser GitLab be.
Sazkirina pêbawer û guherbaran
Bînin bîra xwe ku me çawa mifteyek SSH-ya herêmî lê zêde kir ku têkevin Pantheon û GitLab? Nîşana SSH dikare were bikar anîn ku destûr bide GitLab û Pantheon.
Niha em ê du gavên pêşîn temam bikin: Werin em bi ssh-keygen cotek mifteya SSH-ya nû bi herêmî biafirînin û mifteya taybet wekî guhêrbar li projeyê zêde bikin..
Paşê em ê bipirsin SSH_PRIVATE_KEY çawa Guherbara jîngehê ya GitLab CI/CD di mîhengên projeyê de.
Di gavên sêyemîn û çaremîn de em ê pelek çêbikin .gitlab-ci.yml bi naverok bi vî rengî:
Werin em hê dosyayê negirin .gitlab-ci.yml, hingê hûn ê hewce bikin ku tiştek din lê zêde bikin.
Niha em pêngava pêncemîn pêk tînin û mifteya giştî ya ku we di gava yekem de çêkiriye li ser karûbarên ku hûn hewce ne ku di hawîrdora çêkirinê de bigihîjin wan zêde bikin.
Di doza me de, em dixwazin ji GitLab bigihîjin Pantheon. Em rêwerzên di belgeya Pantheon de li ser bişopînin lê zêdekirina mifteyek SSH li Pantheon û vê gavê pêk bînin.
Bînin bîra xwe: SSH taybet li GitLab e, SSH vekirî li Pantheon e.
Werin em çend guhêrbarên jîngehê yên din saz bikin. Ya yekem jê re PANTHEON_SITE tê gotin. Nirxa wê navê malpera Pantheon li ser makîneya we ye.
Navê li ser makîneyê di dawiya fermana Clone bi Git de tête navnîş kirin. We berê malper bi herêmî klon kiriye, ji ber vê yekê ev ê navê pelrêça depoya herêmî be.
Paşê, em guhêrbara jîngehê saz bikin PANTHEON_GIT_URL. Ev URL-ya depoya Git-ê ye ji bo malpera Pantheon ku me berê bikar aniye.
Tenê URL-ya depoya SSH-ê binivîse, bêyî git clone û navê malperê li ser makîneyê di dawiyê de.
Phew. Ev qediya, niha em dikarin dosyaya xwe biqedînin .gitlab-ci.yml.
Karê veqetandinê biafirînin
Ya ku em ê di destpêkê de bi GitLab CI re bikin, pir dişibihe ya ku me berê bi depoyên Git re kiriye. Lê vê carê, bila em depoya Pantheon-ê wekî çavkaniyek Git-a dûr a duyemîn lê zêde bikin, û dûv re kodê ji GitLab berbi Pantheon-ê bikişîne.
Ji bo vê yekê, werin em mîheng bikin şanocîdeploy и karîdeploy:dev, ji ber ku em ê li hawîrdora pêşkeftinê li ser Pantheon bicîh bikin. Pelê encam .gitlab-ci.yml wê wisa bibînin:
Guhêrbar SSH_PRIVATE_KEY, PANTHEON_SITE и PANTHEON_GIT_URL divê nas xuya bike - me berê van guhêrbarên jîngehê saz kir. Bi van guherbaran em ê bikaribin nirxên di pelê de bikar bînin .gitlab-ci.yml gelek caran, û ew ê tenê hewce ne ku li cîhek nûve bikin.
Di dawiyê de, pelê lê zêde bike, bipejirîne û bişîne .gitlab-ci.yml li ser GitLab.
Kontrolkirina belavkirinê
Ger me her tişt rast kir, peywir deploy:dev dê di GitLab CI/CD de bi serfirazî bixebite û commitek bişîne .gitlab-ci.yml li Pantheonê. Ka em lê binêrin.
Mijarên daxwaza yekbûnê ji Pantheon re dişîne
Li vir em ê taybetmendiya Pantheon-a xweya bijare bikar bînin - multidev, ku hûn dikarin li gorî daxwazê ji bo şaxên Git-ê jîngehên din ên Pantheon biafirînin.
Gihîştina multidev bi sînor e, ji ber vê yekê ev beş dikare were avêtin. Lê ger gihîştina we hebe, hûn dikarin bi ciddî hilberîneriyê zêde bikin bi sazkirina çêkirina otomatîkî ya hawîrdorên multidevê yên li ser Pantheon ji daxwazên yekbûnê yên GitLab.
Pêşî bila em şaxek nû ya Git-ê bi karanîna herêmî çêbikin git checkout -b multidev-support. Naha em dîsa di hundurê de tiştek biguhezînin .gitlab-ci.yml.
Ez hez dikim ku di nav navê hawîrdora Pantheon de hejmara daxwaza hevgirtinê têxim nav xwe. Mînakî, yekem daxwaza yekbûnê ye mr-1, duyem - mr-2 etc.
Daxwaza hevgirtinê diguhere, ji ber vê yekê divê em bi dînamîk navên şaxên Pantheon diyar bikin. Ew li ser GitLab hêsan e - hûn tenê hewce ne ku bikar bînin guherbarên hawirdorê yên pêşwextkirî.
Em dikarin bigirin $CI_MERGE_REQUEST_IIDji bo diyarkirina hejmara daxwaza yekbûnê. Werin em van hemî li gel guhêrbarên jîngehê yên gerdûnî yên ku me berê diyar kiribûn bicîh bînin û li dawiya pelê peywirek nû lê zêde bikin 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
Ew ê mîna karê me be deploy:dev, tenê şax ji Pantheon re tê şandin, ne ku master.
Me dosyaya nûvekirî lê zêde kir û pêve kir .gitlab-ci.yml, û naha em şaxek nû bi GitLab re bişopînin git push -u origin multidev-support.
Naha em ji şaxê daxwaznameyek nû ya yekbûnê biafirînin multidev-supportbi tikandina Daxwaza yekbûnê çêbikin.
Dema ku daxwaznameyek hevgirtinê çêkir, em mêze dikin ka peywira CI/CD çawa tê darve kirin deploy:multidev.
Binêrin, mijarek nû ji Pantheon re hat şandin. Lê heke em biçin beşa multidev li ser panela malpera Pantheon, em ê jîngeha nû li wir nebînin.
Ka em li beşa Git Branches binêrin.
Di encamê de, mijara me mr-1 gihîştin Pantheonê. Werin em ji şaxekê jîngehekê ava bikin mr-1.
Me hawîrdorek multidev çêkiriye, naha em vegerin GitLab û li beşê binêrin Operasyonên > Jîngeh. Em ê navnîşan ji bo bibînin dev и mr-1.
Ev ji ber ku me navnîşek zêde kir environment Bi navê name и url nav karên CI / CD. Ger em li ser îkona jîngeha vekirî bikirtînin, em ê bibin navnîşana jîngeha multidev-ê ya li ser Pantheon.
Afirandina multidev otomatîk bikin
Di prensîbê de, hûn dikarin li vir rawestin û tenê ji bîr mekin ku ji bo her daxwazek hevgirtinê hawîrdorek multidev biafirînin, lê ev pêvajo dikare otomatîk be.
Pantheon amûrek rêza fermanê heye Termînus, ku hûn dikarin bixweber bi platformê re bixebitin. Terminus dihêle hûn ji rêzika fermanê hawîrdorên multidev biafirînin - ji bo îdeal GitLab CI.
Ji bo ceribandina vê yekê ji me re daxwazek hevgirtinek nû hewce ye. Werin em şaxek nû bi kar bînin git checkout -b auto-multidev-creation.
Ji bo ku hûn Terminus-ê di karên GitLab CI/CD-ê de bikar bînin, ji bo pejirandina bi Terminus re tokenek makîneyê û bi Terminus re wêneyek konteynerê hewce dike.
Afirandina Tokenek Makîneya Pantheonê, wê li cîhek ewle hilîne û wekî guhêrbarek jîngehê ya gerdûnî li GitLab bi navî lê zêde bike PANTHEON_MACHINE_TOKEN.
Ger we ji bîr kir ku meriv çawa guhêrbarên jîngehê GitLab zêde bike, vegerin cîhê ku me diyar kiriye PANTHEON_SITE.
Afirandina Dockerfile bi Terminus
Ger hûn Docker bikar neynin an pelan jê hez nekin Dockerfile, wêneyê min bigire registry.gitlab.com/ataylorme/pantheon-gitlab-blog-demo:latest û ji vê beşê derbas bibin.
GitLab qeydek konteynerê heye, ku em dikarin ji bo projeya xwe Dockerfile ava bikin û bi cîh bikin. Ka em bi Terminus re Dockerfile biafirînin ku bi Pantheon re bixebitin.
Terminus amûrek rêzika fermanê ya PHP-ê ye, ji ber vê yekê em bi wêneya PHP-ê dest pê bikin. Ez bi rêya Composer Terminus saz dikim, ji ber vê yekê ez ê bikar bînim wêneya fermî ya Docker Composer. Em diafirînin Dockerfile di pelrêça depoya herêmî de bi naveroka jêrîn:
# 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"
Talîmatên ji bo komkirin û şandina wêneyan ji beşê bişopînin Wêneyan ava bikin û bişopînin в belgeya qeydkirina konteynerêji bo berhevkirina wêneyek Dockerfile û wê bikişîne GitLab.
Beşê vekin Registry di projeya GitLab de. Ger her tişt li gorî planê bimeşe, dê wêneyê me li wir be. Girêdanek bi etîketa wêneyê binivîsin - em ji bo pelê hewce ne .gitlab-ci.yml.
Beşê script di pirsgirêkê de deploy:multidev dest bi mezinbûnê dike, ji ber vê yekê bila em wê veguhezînin pelek cûda. Pelê nû çêbikin 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
Skrîpta di pelrêça taybet de ye û destûrê nade gihandina malperê ya Pantheonê. Ji bo mantiqa xweya multidev skrîptek me heye. Ka em niha beşê nûve bikin deploy:multidev dosî .gitlab-ci.ymlda ku bi vî rengî derkeve holê:
Pêdivî ye ku em pê ewle bin ku karên me di wêneya xwerû ya çêkirî de têne kirin, ji ber vê yekê em pênaseyekê lê zêde bikin image ji URL-ya qeydê berbi .gitlab-ci.yml. Di encamê de, em bi dosyayek bi vî rengî bi dawî bûn .gitlab-ci.yml:
Zêde bikin, bişînin û bişînin private/multidev-deploy.sh и .gitlab-ci.yml. Naha em vegerin GitLab û li bendê ne ku peywira CI/CD biqede. Bi sebir bin: multidev dikare çend hûrdeman bigire ku meriv çêbike.
Dûv re em diçin navnîşa multidevê ya li ser Pantheonê binihêrin. Ey mûcîze! jîngeha Multidev mr-2 jixwe li vir.
encamê
Dema ku me dest bi vekirina daxwazên hevgirtinê û afirandina jîngehan bixweber kir, tîmê min pir kêfa xwe kişand.
Bi amûrên hêzdar ên GitLab û Pantheon, hûn dikarin GitLab bixweber bi Pantheon ve girêdin.
Ji ber ku em GitLab CI/CD bikar tînin, xebata me dê cîhê mezinbûnê hebe. Li vir çend raman hene ku hûn dest pê bikin:
Pêvekek avakirinê zêde bikin.
Testkirina otomatîkî zêde bikin.
Ji bo bicîhanîna standardên kodê peywirek zêde bikin.
Me li Pantheon li ser guhertoya 2 ya xwe karekî baş kiriye pêvek ji bo amûrên avakirina Terminus bi piştgiriya GitLab. Heke hûn naxwazin ji bo her projeyê mîhengan aciz bikin, vê pêvekê biceribînin û ji me re bibin alîkar ku v2 beta ceribandinê bikin. Ji bo tîma Terminus build:project:create Hûn tenê tokenek Pantheon û nîşanek GitLab hewce ne. Ew ê yek ji projeyên nimûneyê bi Composer û ceribandina otomatîkî re bicîh bike, projeyek nû li GitLab, malperek nû ya Pantheon-ê biafirîne, û wan bi karanîna guhêrbarên hawîrdorê û bişkokên SSH ve girêbide.
Li ser nivîskarê
Andrew Taylor ji bo pêşdebiran amûran diafirîne pantheon.