
Moeti oa rona, moqapi oa lisebelisoa tsa moqapi Pantheon, o bua ka mokhoa oa ho iketsetsa ts'ebetso ea ho kenya tšebetsong. WordPress ho sebelisa GitLab CI/CD.
В Ke sebetsa likamanong tsa baqapi, kahoo kamehla ke batla litsela tse ncha tsa ho thusa baqapi. WordPress и Drupal Rarolla mathata a boiketsetso mesebetsing ea mosebetsi. Ho etsa sena, ke rata ho leka lisebelisoa tse ncha le ho li kopanya ho fihlela katleho e kholoanyane.
Hangata ke bona batho ba ntlafatsang ba loantšana le seva se le seng sa sethala.
Ha 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, u seke oa shebella mona."
- e 'ngoe ea lisebelisoa tse pholileng tsa Pantheon - e rarolla bothata bona ka ho u lumella ho theha tikoloho bakeng sa makala a Git ha ho hlokahala. Tikoloho e 'ngoe le e' ngoe ea multidev e na le URL le database ea eona, kahoo bahlahisi ba ka sebetsa ba khobile matšoafo, ba lekola boleng, 'me ba fumana tumello ntle le ho hatakelana menoana.
Empa Pantheon ha e na lisebelisoa leha e le life tsa ho laola phetolelo kapa ho kopanya ho tsoelang pele le ho tsamaisoa (CI/CD). Ho e-na le hoo, ke sethala se tenyetsehang seo u ka kopanyang lisebelisoa leha e le life.
Ke boetse ke hlokometse hore lihlopha li sebelisa sete e le 'ngoe ea lisebelisoa bakeng sa nts'etsopele le e' ngoe 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 qhekella le ho chencha lipakeng tsa lisebelisoa ho hlophisa khoutu le ho hlahloba mathata.
mabapi le ho na le lisebelisoa tse felletseng tsa nts'etsopele: bakeng sa taolo ea mofuta, litekete, likopo tsa ho kopanya, liphaephe tsa maemo a holimo tsa CI/CD, ngoliso ea lijana le lintho tseo kaofela. Ha ke so fumane kopo e ka bang le lintho tse ngata hakana bakeng sa ho tsamaisa tšebetso ea nts'etsopele.
Ke rata li-automation, kahoo ke ithutile ho hokahanya Pantheon le GitLab e le hore boitlamo ba lekala le ka sehloohong la GitLab bo fetisetsoe tikolohong e kholo ea nts'etsopele e Pantheon. 'Me likopo tse kopantseng GitLab li ka haha le ho tsamaisa khoutu libakeng tsa multidev ho Pantheon.
Tataisong ena, ke tla u bontša mokhoa oa ho theha khokahano lipakeng tsa GitLab le Pantheon le ho ntlafatsa mokhoa oa hau oa tšebetso. WordPress и Drupal.
Ehlile, u ka khona. , empa re tla etsa ntho e 'ngoe le e' ngoe ka letsoho ho cheka '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 ena e kenyelletsa lifaele tsa CMS tse kang tsa mantlha, li-plugins le lihlooho. WordPressLifaele tsena li laoloa ka , 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. Hangata li kenngoa ke basebelisi, 'me Git e iphapanyetsa tsona.
, fumana ho eketsehileng ka kapa ho pantheon.io.
Предположения
Morero oa ka ho Pantheon le GitLab o bitsoa pantheon-gitlab-blog-demoLebitso la projeke e lokela ho ba le ikhethang. Re tla be re sebetsa le websaete mona. WordPressLe uena u ka e nka Drupal, empa lintho tse ling li tla hloka ho fetoloa.
Ke tla sebelisa , 'me u ka sebetsa , haeba u batla.
Etsa morero
Pele, a re theheng (re tla khutlela ho sena hamorao).
Hona joale Ebe rea e kenya. WordPress bakeng sa dashboard ya webosaete.
Haeba matsoho a hao a hlohlona ho fetola ntho e itseng, mohlala, ho tlosa le ho eketsa 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.
Re tla e kenya neng? WordPress, khutlela ho dashboard ea webosaete ea Pantheon 'me u fetole mokhoa oa nts'etsopele ho Git.
Boitlamo ba pele ho GitLab
Jwale o hloka ho fetisetsa khoutu ya pele WordPress Ho tloha webosaeteng ea Pantheon ho ea ho GitLab. Ho etsa sena, re kopitsa khoutu ho tsoa polokelong ea Git ea webosaete ea Pantheon sebakeng sa heno ebe re e sutumelletsa polokelong ea GitLab.
Ho etsa hore ho be bonolo le ho sireletseha, 'me re ke ke ra tlameha ho kenya phasewete nako le nako ha re kopanya polokelo ea Pantheon Git. Ka nako e tšoanang, .
Ho etsa sena, kopanya sebaka sa Pantheon sebakeng sa heno ka ho kopitsa taelo e tsoang lebaleng la Clone le Git ho dashboard ea sebaka.
Haeba u hloka thuso, bala litokomane .
Jwale ha re e fetoleng git remote originho supa GitLab sebakeng sa Pantheon. Sena se ka etsoa .
Ha re ee projekeng ea GitLab 'me re kopitse URL ea polokelo ho tsoa lenaneng le theohang la Clone leqepheng la lintlha tsa projeke. Ha re khethe khetho ea Clone ka SSH, hobane re se re thehile 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 romela khoutu WordPress ho tsoa sebakeng sa marang-rang sa Pantheon ho GitLab.
The -force parameter e hlokahala hang feela. Ebe ho ditaelo
git pushE ke ke ea ba ho GitLab.
Ho theha litokomane le likhetho
Hopola kamoo sebakeng sa heno re kentseng senotlolo sa SSH ho kena ho Pantheon le GitLab? Letšoao la SSH le ka sebelisoa ho kena ho GitLab le Pantheon.
GitLab e na le litokomane tse ntle. Ha re shebeng. .
Joale re tla etsa 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 maemong a projeke.
Ka mehato ea boraro le ea bone re tla etsa faele .gitlab-ci.yml ka litaba tse kang tsena:
before_script:
# See https://docs.gitlab.com/ee/ci/ssh_keys/README.html
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | tr -d 'r' | ssh-add - > /dev/null
- mkdir -p $HOME/.ssh && echo "StrictHostKeyChecking no" >> "$HOME/.ssh/config"
- git config --global user.email "$GITLAB_USER_EMAIL"
- git config --global user.name "Gitlab CI"Ha re na ho kenya 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. Latela litaelo tse ho Pantheon docs on mme re etsa mohato ona.
Hopola: SSH e koetsoeng 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 qetellong ea Clone le taelo ea Git. U se u entse sebaka sa sebaka sa hau sa marang-rang, kahoo lena e tla ba lebitso la pokello ea sebaka sa hau sa polokelo.
Ka mor'a moo, re tla theha 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 clonele 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 se etsa pele ka GitLab CI se tšoana haholo le seo re se entseng ka li-repositories tsa Git pele. Empa lekhetlong lena, re tla eketsa Pantheon repo e le sebaka sa bobeli sa Git, ebe re sutumelletsa khoutu ho tloha GitLab ho ea Pantheon.
Ho etsa sena, re tla theha deploy и deploy:dev, hobane re tla be re isa tikolohong ea ntlafatso ho Pantheon. Ka lebaka leo, file .gitlab-ci.yml e tla shebahala tjena:
stages:
- deploy
before_script:
# See https://docs.gitlab.com/ee/ci/ssh_keys/README.html
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | tr -d 'r' | ssh-add - > /dev/null
- mkdir -p $HOME/.ssh && echo "StrictHostKeyChecking no" >> "$HOME/.ssh/config"
- git config --global user.email "$GITLAB_USER_EMAIL"
- git config --global user.name "Gitlab CI"
deploy:dev:
stage: deploy
environment:
name: dev
url: https://dev-$PANTHEON_SITE.pantheonsite.io/
script:
- git remote add pantheon $PANTHEON_GIT_URL
- git push pantheon master --force
only:
- masterMefuta 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 litekanyetso tse faeleng .gitlab-ci.yml hangata, 'me u tla hloka feela ho li nchafatsa sebakeng se le seng.
Qetellong, ha re eketse, re itlame 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 romelle boitlamo .gitlab-ci.yml ka Pantheon. Ha re shebeng.
Ho romella makala a kopo ea ho kopanya ho Pantheon
Mona re tla sebelisa tšobotsi eo ke e ratang ka ho fetisisa ea Pantheon - , moo o ka theha tikoloho e eketsehileng ea Pantheon bakeng sa makala a Git ha ho hlokahala.
, kahoo ha ua tlameha ho etsa karolo ena. Empa haeba u na le phihlello, u ka fumana matlafatso e matla ea ts'ebetso ka ho theha boiketsetso ba tikoloho ea multidev ho Pantheon ho tsoa ho likopo tsa GitLab tse kopantseng.
Taba ea 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 GitLab, sena se bonolo - o sebelisa feela .
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 oa ho sebelisa: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_requestsE tla shebahala joalo ka 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-support, ka ho tobetsa Etsa kopo ea ho kopanya.
Ha re entse kopo ea ho kopanya, re sheba hore na mosebetsi oa CI / CD o etsoa joang deploy:multidev.
Bona, lekala le lecha le rometsoe Pantheon. Empa haeba re ea karolong ea li-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, lekala la rona mr-1 fihla Pantheon. Ha re theheng tikoloho ho tsoa lekaleng mr-1.
Kaha joale re thehile tikoloho ea li-multidev, ha re khutleleng ho GitLab 'me re shebe karolo. Ditshebetso > Tikoloho. Re tla bona lirekoto tsa dev и mr-1.
Sena ke hobane re kentse rekoto environment Ka lebitso name и url mesebetsing ea CI/CD. Haeba re tobetsa letšoao la tikoloho e bulehileng, re tla ea 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 , moo o ka sebetsang le sethala ka bohona. Terminus e u lumella ho theha tikoloho ea multidev ho tsoa moleng oa taelo - e loketseng .
Re hloka kopo e ncha ea ho kopanya ho leka sena. Ha re theheng lekala le lecha ka git checkout -b auto-multidev-creation.
Ho sebelisa Terminus mesebetsing ea GitLab CI/CD, o hloka lets'oao la mochini ho netefatsa Terminus le setšoantšo sa setshelo se nang le Terminus.
, 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.
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.
, moo re ka ahang le ho amohela 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 theha . 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 в , ho bokella setšoantšo ho tloha Dockerfile 'me u e romelle ho GitLab.
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 mosebetsing 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..."
fiScript e fumaneha bukeng ea poraefete le . Re na le script bakeng sa logic ea rona ea multidev. Ha re nchafatse karolo hona joale. deploy:multidev faele .gitlab-ci.yml, hoo e ka bang tjena:
deploy:multidev:
stage: deploy
environment:
name: multidev/mr-$CI_MERGE_REQUEST_IID
url: https://mr-$CI_MERGE_REQUEST_IID-$PANTHEON_SITE.pantheonsite.io/
script:
# Run the multidev deploy script
- "/bin/bash ./private/multidev-deploy.sh"
only:
- merge_requestsRe hloka ho etsa bonnete ba hore mesebetsi ea rona e etsoa ho latela setšoantšo seo re se entseng, ka hona, a re kenyeng tlhaloso. image ka URL ea ngoliso ho .gitlab-ci.yml. Ka lebaka leo, re ile ra fumana faele e kang ena .gitlab-ci.yml:
image: registry.gitlab.com/ataylorme/pantheon-gitlab-blog-demo:latest
stages:
- deploy
before_script:
# See https://docs.gitlab.com/ee/ci/ssh_keys/README.html
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | tr -d 'r' | ssh-add - > /dev/null
- mkdir -p $HOME/.ssh && echo "StrictHostKeyChecking no" >> "$HOME/.ssh/config"
- git config --global user.email "$GITLAB_USER_EMAIL"
- git config --global user.name "Gitlab CI"
deploy:dev:
stage: deploy
environment:
name: dev
url: https://dev-$PANTHEON_SITE.pantheonsite.io/
script:
- git remote add pantheon $PANTHEON_GIT_URL
- git push pantheon master --force
only:
- master
deploy:multidev:
stage: deploy
environment:
name: multidev/mr-$CI_MERGE_REQUEST_IID
url: https://mr-$CI_MERGE_REQUEST_IID-$PANTHEON_SITE.pantheonsite.io/
script:
# Run the multidev deploy script
- "/bin/bash ./private/multidev-deploy.sh"
only:
- merge_requestsEketsa, 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 ho sheba lenane la li-multidev ho Pantheon. Oh, mohlolo! Tikoloho ea multidev mr-2 e se e le mona.
fihlela qeto e
Sehlopha sa ka se ile sa ba monate le ho feta 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 na le sebaka sa ho hola. Mona ke mehopolo e 'meli ea ho u qalisa:
- Kenya mohato oa ho haha.
- Kenya tlhahlobo e iketsang.
- Kenya mosebetsi ho netefatsa hore litekanyetso tsa khoutu lia lateloa.
- Eketsa .
Nke ke tsebe seo u se nahanang ka GitLab, Pantheon le automation.
P.S. A na u ne u tseba hore Terminus, Pantheon command line tool, ?
Rona Pantheon re 'nile ra sebetsa ka thata ho mofuta oa 2 oa rona ka tšehetso ea GitLab. Haeba u sa batle ho ikhathatsa ka ho e hlophisa bakeng sa morero o mong le o mong, leka plugin ena 'me u re thuse ho lekola beta ea v2. Bakeng sa sehlopha sa Terminus build:project:create Seo u se hlokang feela ke letšoao la Pantheon le letšoao la GitLab. E tla sebelisa e 'ngoe ea liporojeke tsa mohlala ka Moqapi le tlhahlobo ea othomathike, e thehe projeke e ncha ea GitLab, sebaka se secha sa Pantheon, ebe e li hokela ho sebelisa mefuta-futa ea tikoloho le linotlolo tsa SSH.
Mabapi le mongoli
Andrew Taylor o theha lisebelisoa bakeng sa batho ba ntlafatsang ho .
Source: www.habr.com
