ProHoster > Blog > Tsamaiso > Mokhoa oa ho hokahanya GitLab le Pantheon le Optimize Drupal le WordPress Workflows
Mokhoa oa ho hokahanya GitLab le Pantheon le Optimize Drupal le WordPress Workflows
Moqapi oa lisebelisoa tsa rona tsa moeti oa Pantheon o bua ka mokhoa oa ho iketsetsa li-deployments tsa WordPress ka GitLab CI/CD.
В Pantheon Ke sebetsa likamanong tsa nts'etsopele, kahoo ke lula ke batla mekhoa e mecha ea ho thusa baetsi ba WordPress le Drupal ho rarolla mathata a boits'oaro mosebetsing oa bona. Ho etsa sena, ke rata ho leka lisebelisoa tse ncha le ho li kopanya ho sebetsa ka katleho.
Hangata ke bona batho ba ntlafatsang ba loantšana le seva se le seng sa sethala.
Ho monate ho emela nako ea hau ea ho sebelisa seva ea mahareng kapa ho romella bareki URL e nang le molaetsa o reng: "Sheba mona, empa o seke oa sheba mona."
Libaka tsa Multidev - e 'ngoe ea lithulusi tse pholileng tsa Pantheon - e rarolla bothata bona, hobane ka tsona u ka etsa libaka tsa makala a Git ka tlhokahalo. Tikoloho e 'ngoe le e' ngoe ea li-multidev e na le URL le database ea eona, kahoo bahlahisi ba ka sebetsa ka khutso, ba hlahloba boleng, 'me ba fumana tumello ntle le ho hatakelana menoana.
Empa Pantheon ha e na lisebelisoa tsa ho laola phetolelo kapa ho kopanya ho tsoelang pele le ho tsamaisoa (CI/CD). Empa ke sethala se tenyetsehang seo u ka kopanyang lisebelisoa life kapa life.
Ke boetse ke hlokometse hore lihlopha li sebelisa lisebelisoa tse itseng bakeng sa nts'etsopele, le tse fapaneng bakeng sa ho bokella le ho tsamaisa.
Ka mohlala, ba na le lisebelisoa tse fapaneng tsa taolo ea phetolelo le CI / CD. U tlameha ho pota-pota le ho fetola pakeng tsa lisebelisoa ho hlophisa khoutu le ho hlahloba mathata.
mabapi le GitLab ho na le sete e felletseng ea lisebelisoa tsa ntlafatso: bakeng sa taolo ea mofuta, litekete, likopo tsa ho kopanya, phaephe ea boemo bo holimo ea CI/CD, ngoliso ea lijana, le tsohle tse joalo. Ha ke so fumane sesebelisoa se fanang ka lintho tse ngata ho laola ts'ebetso ea hau ea ntlafatso.
Ke rata automation, kahoo ke ithutile ho hokahanya Pantheon le GitLab e le hore boitlamo ba lekala le ka sehloohong ho GitLab bo fetisetsoe tikolohong e kholo ea nts'etsopele e Pantheon. 'Me likopo tse kopantseng GitLab li ka theha le ho tsamaisa khoutu libakeng tsa multidev ho Pantheon.
Thutong ena, ke tla u tsamaisa ka mokhoa oa ho theha khokahano lipakeng tsa GitLab le Pantheon le ho ntlafatsa ts'ebetso ea hau ea WordPress le Drupal.
Ehlile hoa khoneha, seipone sa GitLab polokelo, empa re tla etsa ntho e 'ngoe le e 'ngoe ka matsoho a rona ho batlisisa GitLab CI 'me nakong e tlang sebelisa sesebelisoa sena eseng feela bakeng sa ho romelloa.
Selelekela
Bakeng sa poso ena, o hloka ho utloisisa hore Pantheon e arola sebaka se seng le se seng ka likarolo tse tharo: khoutu, database le lifaele.
Khoutu e kenyelletsa lifaele tsa CMS joalo ka WordPress core, li-plugins le lihlooho. Lifaele tsena li laoloa ho Li-repositories tsa Git, e tsamaisoang ke Pantheon, ho bolelang hore re ka tsamaisa khoutu ho tloha GitLab ho ea Pantheon ka Git.
Lifaele tse Pantheon ke lifaele tsa media, ke hore, litšoantšo tsa sebaka seo. Ka tloaelo li jarollotsoe ke basebelisi mme Git e iphapanyetsa tsona.
Morero oa ka ho Pantheon le GitLab o bitsoa pantheon-gitlab-blog-demo. Lebitso la morero le tlameha ho ikhetha. Mona re tla sebetsa le sebaka sa WordPress. U ka nka Drupal, empa u tla hloka ho fetola lintho tse ling.
Haeba matsoho a hao a hlohlona ho fetola ntho e itseng, mohlala, tlosa kapa u kenye li-plugins, e-ba le mamello. Sebaka sa marang-rang ha se so hokahane le GitLab, 'me re batla hore liphetoho tsohle tsa khoutu li fete ka GitLab.
Hang ha re kenya WordPress, khutlela ho Dashboard ea sebaka sa marang-rang sa Pantheon 'me u fetole mokhoa oa ntlafatso ho Git.
Boitlamo ba pele ho GitLab
Joale o hloka ho fetisetsa khoutu ea pele ea WordPress ho tloha sebakeng sa Pantheon ho ea GitLab. Ho etsa sena, re kopanya khoutu e tsoang polokelong ea Git ea sebaka sa Pantheon sebakeng sa heno, ebe re e romella sebakeng sa polokelo ea GitLab.
Ho etsa sena, kopanya sebaka sa marang-rang sa Pantheon sebakeng sa heno ka ho kopitsa taelo e tsoang lebaleng la Clone le Git ho dashboard ea sebaka sa marang-rang.
Jwale ha re fetoheng git remote originho supa GitLab sebakeng sa Pantheon. E ka etsoa командой git remote.
Ha re ee projekeng ea GitLab 'me re kopitse URL ea polokelo ho tsoa ho Clone e hlahang leqepheng la lintlha tsa projeke. Ha re khethe khetho ea Clone ka SSH, hobane re se re hlophisitse senotlolo sa SSH.
ke default git remote bakeng sa kopi ea lehae ea polokelo ea khoutu - origin. Sena se ka fetoloa c git remote set-url origin [URL репозитория GitLab], moo ho e-na le li-brackets re kenyang URL ea sebele.
Qetellong, re qala git push origin master --forceho sutumelletsa khoutu ea WordPress ho tloha Pantheon ho ea GitLab.
Khetho ea -force e hlokahala hang feela. Ebe ka lihlopha git push e ke ke ea ba ho GitLab.
Ho theha litokomane le likhetho
Hopola kamoo re kentseng senotlolo sa SSH sebakeng sa heno ho kena ho Pantheon le GitLab? Letšoao la SSH le ka sebelisoa ho fana ka tumello ea GitLab le Pantheon.
Joale re tla phethela mehato e 'meli ea pele: Ha re theheng konopo e ncha ea SSH sebakeng sa heno ka ssh-keygen mme re kenye senotlolo sa poraefete joalo ka phetoho morerong..
Joale re tla botsa SSH_PRIVATE_KEY kamoo GitLab CI/CD tikoloho e fapaneng maemong a projeke.
Ka mehato ea boraro le ea bone re tla etsa faele .gitlab-ci.yml ka litaba tse kang tsena:
Ha re fane ka faele hajoale .gitlab-ci.yml, joale o tla hloka ho eketsa ntho e 'ngoe ho eona.
Hona joale re etsa mohato oa bohlano le eketsa senotlolo sa sechaba seo u se entseng mohatong oa pele ho lits'ebeletso tseo u hlokang ho li fumana tikolohong ea kaho.
Tabeng ea rona, re batla ho fihlella Pantheon ho tloha GitLab. Re latela litaelo tse tokomaneng ea Pantheon ka ho eketsa senotlolo sa SSH ho Pantheon 'me u etse mohato ona.
Hopola: SSH ea poraefete e ho GitLab, SSH e bulehileng e ho Pantheon.
Ha re theheng tse ling tse 'maloa tse fapaneng tsa tikoloho. Ea pele e bitsoa PANTHEON_SITE. Boleng ba eona ke lebitso la sebaka sa Pantheon mochining oa hau.
Lebitso le mochining le thathamisitsoe qetellong ea Clone le taelo ea Git. U se u entse sebaka sa sebaka sa heno, kahoo lena e tla ba lebitso la bukana ea polokelo ea lehae.
Ka mor'a moo, ha re theheng phetoho ea tikoloho PANTHEON_GIT_URL. Ena ke URL ea polokelo ea Git bakeng sa sebaka sa Pantheon seo re seng re se sebelisitse.
Kenya feela URL ea polokelo ea SSH, ntle le git clone le lebitso la sebaka ka mochine qetellong.
Phew. Ho felile, joale re ka qeta faele ea rona .gitlab-ci.yml.
Etsa mosebetsi oa ho tsamaisa
Seo re tla be re se etsa qalong ka GitLab CI se tšoana haholo le seo re se entseng ka polokelo ea Git nakong e fetileng. Empa lekhetlong lena, ha re kenyeng polokelo ea Pantheon e le mohloli oa bobeli o hole oa Git, ebe re sutumelletsa khoutu ho tloha GitLab ho ea Pantheon.
Ho etsa sena, a re ke re configure sethaladeploy и mosebetsideploy:dev, hobane re tla romela tikolohong ea ntlafatso ho Pantheon. Faele e hlahang .gitlab-ci.yml tla shebahala tjena:
Mefuta e fapaneng SSH_PRIVATE_KEY, PANTHEON_SITE и PANTHEON_GIT_URL e lokela ho shebahala e tloaelehile - re theha mefuta ena ea tikoloho pejana. Ka mefuta ena e fapaneng re tla khona ho sebelisa boleng ba faele .gitlab-ci.yml hangata, 'me li tla hloka feela ho nchafatsoa sebakeng se le seng.
Qetellong, eketsa, itlama le ho romela faele .gitlab-ci.yml ho GitLab.
Ho hlahloba ho tsamaisoa
Haeba re entse tsohle ka nepo, mosebetsi deploy:dev e tla sebetsa ka katleho ho GitLab CI/CD mme e fane ka boitlamo .gitlab-ci.yml ho Pantheon. Ha re shebeng.
Ho romella likhoele tsa kopo e kopaneng ho Pantheon
Mona re tla sebelisa karolo eo ke e ratang haholo ea Pantheon − multidev, moo o ka theha tikoloho e eketsehileng ea Pantheon bakeng sa makala a Git ha ho hlokahala.
Ho fihlella multidev ho na le moeli, kahoo karolo ena e ka tloloa. Empa haeba u na le phihlello, o ka eketsa tlhahiso haholo ka ho theha boiketsetso ba tikoloho ea multidev ho Pantheon ho tsoa ho likopo tsa GitLab tse kopanyang.
Pele, ha re etseng lekala le lecha la Git sebakeng sa heno re sebelisa git checkout -b multidev-support. Joale ha re fetoleng ho hong hape .gitlab-ci.yml.
Ke rata ho kenyelletsa nomoro ea kopo ea ho kopanya lebitsong la tikoloho la Pantheon. Ka mohlala, kopo ea pele ea ho kopanya ke mr-1, ea bobeli - mr-2 etc.
Kopo ea ho kopanya e fetoha, kahoo re hloka ho tseba ka matla mabitso a makala a Pantheon. Ho bonolo ho GitLab - o hloka feela ho e sebelisa maemo a fapaneng a tikoloho.
Re ka nka $CI_MERGE_REQUEST_IIDho hlakisa nomoro ea kopo ea ho kopanya. Ha re sebeliseng tsena tsohle hammoho le mefuta-futa ea tikoloho ea lefats'e eo re e boletseng pejana 'me re kenye mokhoa o mocha: mosebetsi oa multidev qetellong ea faele. .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
E tla tšoana le mosebetsi oa rona deploy:dev, lekala feela le romeloa Pantheon, eseng ho master.
Re kentse le ho kenya faele e ntlafalitsoeng .gitlab-ci.yml, 'me joale ha re sutumelletseng lekala le lecha ho GitLab ka git push -u origin multidev-support.
Joale ha re theheng kopo e ncha ea ho kopanya ho tsoa lekaleng multidev-supportka ho tobetsa Etsa kopo ea ho kopanya.
Ha re se re entse kopo ea ho kopanya, re sheba hore na mosebetsi oa CI/CD o etsoa joang deploy:multidev.
Sheba, khoele e ncha e rometsoe Pantheon. Empa haeba re ea karolong ea multidev ho dashboard ea sebaka sa Pantheon, re ke ke ra bona tikoloho e ncha moo.
Ha re shebeng karolo ea Git Branches.
Ka lebaka leo, khoele ea rona mr-1 fihla Pantheon. Ha re theheng tikoloho ho tsoa lekaleng mr-1.
Re thehile tikoloho ea li-multidev, joale ha re khutleleng ho GitLab 'me re shebe karolo Ditshebetso > Tikoloho. Re tla bona likeno bakeng sa dev и mr-1.
Sena ke hobane re kentse keno environment Ka lebitso name и url ka mesebetsi ea CI/CD. Haeba re tobetsa letšoao la tikoloho e bulehileng, re tla isoa ho URL ea tikoloho ea multidev ho Pantheon.
Iketsetse tlhahiso ea multidev
Ha e le hantle, u ka emisa mona 'me u hopole feela ho theha tikoloho ea multidev bakeng sa kopo e' ngoe le e 'ngoe ea ho kopanya, empa mokhoa ona o ka iketsetsa.
Pantheon e na le sesebelisoa sa mola oa taelo Terminus, moo o ka sebetsang le sethala ka bohona. Terminus e u lumella ho theha tikoloho ea multidev ho tsoa moleng oa taelo - e loketseng GitLab CI.
Re hloka kopo e ncha ea ho kopanya ho leka sena. Ha re theheng lekala le lecha re sebelisa git checkout -b auto-multidev-creation.
Ho sebelisa Terminus mesebetsing ea GitLab CI/CD, o hloka letšoao la mochini bakeng sa netefatso le Terminus le setšoantšo sa setshelo se nang le Terminus.
Ho theha Pantheon Machine Token, e boloke sebakeng se sireletsehileng 'me u e kenye e le phetoho ea tikoloho ea lefats'e ho GitLab e nang le lebitso PANTHEON_MACHINE_TOKEN.
Haeba u lebetse mokhoa oa ho kenyelletsa mefuta e fapaneng ea tikoloho ea GitLab, khutlela moo re hlalositseng teng PANTHEON_SITE.
Ho theha Dockerfile ka Terminus
Haeba u sa sebelise Docker kapa u sa rate lifaele Dockerfile, nka setšoantšo sa ka registry.gitlab.com/ataylorme/pantheon-gitlab-blog-demo:latest mme o tlole karolo ena.
GitLab e na le ngoliso ea lijana, moo re ka ahang le ho beha Dockerfile bakeng sa morero oa rona. Ha re theheng Dockerfile ka Terminus ho sebetsa le Pantheon.
Terminus ke sesebelisoa sa taelo ea PHP, kahoo ha re qaleng ka setšoantšo sa PHP. Ke kenya Terminus ka Composer, kahoo ke tla e sebelisa setšoantšo sa semmuso sa Docker Composer. Rea bopa Dockerfile bukeng ea polokelo ea lehae e nang le litaba tse latelang:
# 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"
Latela litaelo tsa ho kopanya le ho romela litšoantšo ho tsoa karolong Haha le ho sututsa litšoantšo в litokomane tsa ngoliso ea setsheloho bokella setshoantsho ho tloha Dockerfile ebe o e sutumelletsa ho GitLab.
Ho bula karolo Registry morerong oa GitLab. Haeba ntho e 'ngoe le e' ngoe e tsamaile ho ea ka moralo, setšoantšo sa rona se tla ba teng. Ngola sehokelo sa tag ea setšoantšo - re e hloka bakeng sa faele .gitlab-ci.yml.
Karolo script bothateng deploy:multidev e qala ho hola, ka hona, a re e ise faeleng e fapaneng. Theha faele e ncha 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
Mongolo o bukeng ea poraefete le ha e lumelle phihlello ea webo ho Pantheon. Re na le script bakeng sa logic ea rona ea multidev. Ha re nchafatse karolo hona joale deploy:multidev faele .gitlab-ci.ymlkahoo e shebahala tjena:
Re hloka ho etsa bonnete ba hore mesebetsi ea rona e etsoa ka setšoantšo sa tloaelo se entsoeng, kahoo a re kenyeng tlhaloso image ho tloha ho URL ea ngoliso ho ea ho .gitlab-ci.yml. Ka lebaka leo, re ile ra qetella re e-na le faele e kang ena .gitlab-ci.yml:
Eketsa, itlama 'me u romele private/multidev-deploy.sh и .gitlab-ci.yml. Joale re khutlela GitLab 'me re emetse hore mosebetsi oa CI/CD o phethe. E-ba le mamello: multidev e ka nka metsotso e mengata ho theha.
Ebe re ea sheba lenane la li-multidev ho Pantheon. Oho mohlolo! Multidev tikoloho mr-2 e se e le mona.
fihlela qeto e
Sehlopha sa ka se ne se natefeloa haholo ha re qala ho bula likopo tsa ho kopanya le ho theha tikoloho ka bo eona.
Ka lisebelisoa tse matla tsa GitLab le Pantheon, o ka hokela GitLab ho Pantheon ka bo eona.
Kaha re sebelisa GitLab CI/CD, mosebetsi oa rona o tla ba le sebaka sa ho hola. Mehopolo e 'maloa ea ho u qalisa ke ena:
Kenya mohato oa ho haha.
Kenya tlhahlobo e iketsang.
Kenya mosebetsi ho netefatsa hore maemo a khoutu a fihlelleha.
Rona Pantheon re entse mosebetsi o motle ho mofuta oa 2 oa rona plugin bakeng sa lisebelisoa tsa ho haha tsa Terminus ka tšehetso ea GitLab. Haeba u sa batle ho ikhathatsa ka litlhophiso tsa projeke ka 'ngoe, leka plugin ena 'me u re thuse ho lekola beta ea v2. Bakeng sa sehlopha sa Terminus build:project:create U hloka feela letšoao la Pantheon le letšoao la GitLab. O tla sebelisa e 'ngoe ea merero ea mohlala ka Moqapi le tlhahlobo ea boiketsetso, a thehe projeke e ncha ho GitLab, sebaka se secha sa Pantheon, 'me a li hokahanye a sebelisa mefuta e fapaneng ea tikoloho le linotlolo tsa SSH.
Mabapi le mongoli
Andrew Taylor o theha lisebelisoa bakeng sa batho ba ntlafatsang ho Pantheon.