Wedu muenzi anovandudza maturusi mugadziri kuPantheon anotaura nezve maitiro ekugadzira WordPress deployments uchishandisa GitLab CI/CD.
Π
Ini kazhinji ndinoona vanogadzira vachinetsekana neiyo imwe staging server.
Zvinofadza kumirira nguva yako yekushandisa sevha yepakati kana kutumira vatengi URL ine chinyorwa: "Tarisa pano, asi usatarise pano."
Asi Pantheon haina zvishandiso zvekutonga shanduro kana kuenderera mberi kwekubatanidza uye kutumira (CI/CD). Asi ipuratifomu inoshanduka yaunogona kubatanidza chero maturusi.
Ndakaona zvakare kuti zvikwata zvinoshandisa mamwe maturusi ekusimudzira, uye akasiyana ekuunganidza uye kutumira.
Semuenzaniso, vane maturusi akasiyana ekudzora shanduro uye CI/CD. Iwe unofanirwa kutenderera uye chinja pakati pezvishandiso kugadzirisa kodhi uye kuongorora matambudziko.
pamusoro
Ini ndinoda otomatiki, saka ndakadzidza nzira yekubatanidza Pantheon kuGitLab kuitira kuti inozvipira kubazi guru paGitLab iendeswe kunzvimbo huru yebudiriro muPantheon. Uye batanidza zvikumbiro paGitLab inogona kugadzira uye kutumira kodhi kune multidev nharaunda muPantheon.
Muchidzidzo ichi, ini ndichakufambisa iwe nzira yekumisikidza chinongedzo pakati peGitLab nePantheon uye kukwiridzira yako WordPress uye Drupal kufambiswa kwebasa.
Chokwadi zvinogoneka,
Nhanganyaya
Kune iyi positi, iwe unofanirwa kunzwisisa kuti Pantheon inotyora saiti yega yega kuita zvinhu zvitatu: kodhi, dhatabhesi, uye mafaera.
Iyo kodhi inosanganisira mafaera eCMS akadai seWordPress musimboti, plugins, uye misoro. Aya mafaira anotariswa mukati
Mafaira muPantheon ndiwo mafaera emidhiya, kureva mifananidzo yesaiti. Kazhinji ivo vanoiswa nevashandisi uye Git inovafuratira.
Kufungidzira
purojekiti yangu paPantheon neGitLab inonzi pantheon-gitlab-blog-demo
. Zita repurojekiti rinofanira kunge rakasiyana. Pano isu tichashanda neWordPress saiti. Unogona kutora Drupal, asi iwe uchafanirwa kushandura zvimwe zvinhu.
Ndichashandisa
Gadzira chirongwa
Kutanga, ngatigadzirirei
Iye zvino
Kana maoko ako achikwenya kushandura chimwe chinhu, semuenzaniso, bvisa kana kuwedzera plugins, iva nemoyo murefu. Iyo saiti haisati yabatana neGitLab, uye isu tinoda kuti shanduko dzese dzekodhi dziende kuburikidza neGitLab.
Kana tangoisa WordPress, dzokera kuPantheon webhusaiti dashboard uye shandura nzira yekusimudzira kuita Git.
Yekutanga kuzvipira paGitLab
Iye zvino iwe unofanirwa kuendesa yekutanga WordPress kodhi kubva kuPantheon saiti kuenda kuGitLab. Kuti tiite izvi, tinotevedzera kodhi kubva kuGit repository yePantheon saiti munharaunda, uye tozoitumira kune GitLab repository.
Kuita kuti zvive nyore uye zvakachengeteka,
Kuti uite izvi, gadzira iyo Pantheon saiti munharaunda nekukopa murairo kubva kuClone neGit munda pane saiti dhibhodhi.
Kana uchida rubatsiro, verenga zvinyorwa
Zvino ngatichinjei git remote origin
kunongedza kuGitLab pachinzvimbo chePantheon. Zvinogona kuitwa ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ git remote
Ngatiendei kuGitLab purojekiti uye tikopa repository URL kubva kuClone kudonhedza pane peji reruzivo rweprojekiti. Ngatisarudzei Clone ine SSH sarudzo, nekuti isu takatogadzira SSH kiyi.
kubudikidza default git remote
kune kopi yemunharaunda yekodhi repository - origin
. Izvi zvinogona kuchinjwa <c git remote set-url origin [URL ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ GitLab]
, apo pane mabhuraketi tinoisa iyo chaiyo URL.
Pakupedzisira, tinotanga git push origin master --force
kusundira WordPress kodhi kubva Pantheon kuenda kuGitLab.
Iyo -force sarudzo inongodiwa kamwe chete. Zvadaro muzvikwata
git push
haizove paGitLab.
Kugadzira zvitupa uye zvakasiyana
Rangarira mawedzerero atakaita kiyi yeSSH munharaunda kuti upinde muPantheon neGitLab? Iyo SSH tokeni inogona kushandiswa kubvumidza GitLab uye Pantheon.
GitLab ine zvinyorwa zvakanakisa. Ngationei
Iye zvino tichapedzisa matanho maviri ekutanga: Ngatigadzirei nyowani SSH kiyi peya munharaunda ne ssh-keygen uye tiwedzere kiyi yakavanzika sechinosiyana kupurojekiti..
Ipapo tichabvunza SSH_PRIVATE_KEY
sei
Muchikamu chechitatu nechina tichagadzira faira .gitlab-ci.yml
nezvirimo sezvizvi:
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"
Ngatisaite faira parizvino .gitlab-ci.yml
, ipapo uchafanira kuwedzera chimwe chinhu kwairi.
Zvino tinoita danho rechishanu uye wedzera kiyi yeruzhinji yawakagadzira padanho rekutanga kune masevhisi aunoda kuwana munzvimbo yekuvaka.
Mune yedu kesi, isu tinoda kuwana Pantheon kubva kuGitLab. Isu tinotevera mirairo mugwaro rePantheon pa
Rangarira: yakavanzika SSH iri muGitLab, yakavhurika SSH iri muPantheon.
Ngatimisei mamwe mashoma emamiriro ekunze akasiyana. Yekutanga inonzi PANTHEON_SITE. Kukosha kwayo izita rePantheon saiti pamushini wako.
Iro zita pamushini rakanyorwa kumagumo kweClone neGit command. Iwe wakatogadzira saiti yacho munharaunda, saka iri richava zita renzvimbo repository dhairekitori.
Tevere, ngatimisikidze iyo nharaunda inoshanduka PANTHEON_GIT_URL
. Iyi ndiyo Git repository URL yePantheon saiti yatakatoshandisa.
Pinda chete SSH repository URL, pasina
git clone
uye zita renzvimbo pamushini kumagumo.
Phew. Zvaitwa, ikozvino tinogona kupedza faira redu .gitlab-ci.yml
.
Gadzira basa rekutumira
Zvatichange tichiita neGitLab CI zvakafanana nezvatakaita neGit repositori munguva yakapfuura. Asi panguva ino, ngatiwedzerei Pantheon repository sechipiri kure Git sosi, uye tobva tasundira kodhi kubva kuGitLab kuenda kuPantheon.
Kuti tiite izvi, ngatigadzirirei deploy
ΠΈ deploy:dev
, nekuti isu tichaendesa kunzvimbo yekusimudzira paPantheon. Iyo faira inoguma .gitlab-ci.yml
ichaita seiyi:
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
Misiyano SSH_PRIVATE_KEY, PANTHEON_SITE
ΠΈ PANTHEON_GIT_URL
inofanirwa kutaridzika seyakajairwa - isu tinomisikidza idzi nharaunda dzakasiyana kare. Nezviyero izvi tichakwanisa kushandisa kukosha mufaira .gitlab-ci.yml
kakawanda, uye ivo vanongoda kuvandudzwa munzvimbo imwechete.
Pakupedzisira, wedzera, zvipira uye tumira iyo faira .gitlab-ci.yml
paGitLab.
Kuongorora kutumirwa
Kana takaita zvese nemazvo, basa racho deploy:dev
ichamhanya zvinobudirira muGitLab CI/CD uye kuendesa kuzvipira .gitlab-ci.yml
paPantheon. Ngationei.
Kutumira tambo dzekukumbira dzekubatanidza kuPantheon
Pano tichashandisa yangu yandinoda Pantheon chimiro β
Kutanga ngatiite bazi idzva reGit munharaunda tichishandisa git checkout -b multidev-support
. Zvino ngatichinje chimwe chinhu zvakare mukati .gitlab-ci.yml
.
Ndinoda kuisa nhamba yekukumbira yekubatanidza muzita rePantheon nharaunda. Semuenzaniso, chikumbiro chekutanga chekubatanidza ndechekuti mr-1
, chepiri - mr-2
nezvimwewo.
Chikumbiro chekubatanidza chinoshanduka, saka isu tinofanirwa kuona zvine simba mazita ebazi rePantheon. Zviri nyore paGitLab - iwe unongoda kushandisa
Tinogona kutora $CI_MERGE_REQUEST_IID
kutsanangura nhamba yekukumbira yekubatanidza. Ngatishandisei zvese izvi pamwe chete nemamiriro ekunze epasirese atakambotaura uye towedzera deploy nyowani: multidev basa pakupera kwefaira. .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
Zvichafanana nebasa redu deploy:dev
, bazi chete rinotumirwa kuPantheon, kwete master
.
Isu takawedzera uye takazvipira iyo yakagadziridzwa faira .gitlab-ci.yml
, uye zvino ngatisundirei bazi idzva kuGitLab naro git push -u origin multidev-support
.
Zvino ngatigadzire chikumbiro chitsva chekubatanidza kubva kubazi multidev-support
nekudzvanya Gadzira chikumbiro chekubatanidza.
Tagadzira chikumbiro chekubatanidza, tinotarisa kuti basa reCI/CD rinoitwa sei deploy:multidev
.
Tarisa, tambo itsva yakatumirwa kuPantheon. Asi kana tikaenda kune chikamu chemultidev pane Pantheon site dashboard, hatizooni nzvimbo itsva ikoko.
Ngatitarisei chikamu cheGit Branches.
Nekuda kweizvozvo, thread yedu mr-1
kusvika kuPantheon. Ngatigadzire nharaunda kubva kubazi mr-1
.
Isu takagadzira nharaunda yemultidev, ikozvino ngatidzokere kuGitLab uye titarise chikamu Mashandiro > Mamiriro ezvinhu. Tichaona zvinyorwa zve dev
ΠΈ mr-1
.
Izvi zvinodaro nekuti takawedzera chinopinda environment
Nezita name
ΠΈ url
muCI/CD mabasa. Kana tikadzvanya pane yakavhurika nharaunda icon, isu tichaendeswa kune iyo URL yenzvimbo yemultidev paPantheon.
Automate kusikwa kwe multidev
Muchidimbu, iwe unogona kumira pano uye ingo rangarira kugadzira iyo multidev nharaunda yechikumbiro chega chega chekubatanidza, asi maitiro aya anogona otomatiki.
Pantheon ine command line tool
Tinoda chikumbiro chitsva chekubatanidza kuti tiedze izvi. Ngatigadzire bazi idzva tichishandisa git checkout -b auto-multidev-creation
.
Kuti ushandise Terminus muGitLab CI/CD mabasa, unoda tokeni yemuchina yekusimbisa nayo Terminus uye mufananidzo wemudziyo une Terminus.
PANTHEON_MACHINE_TOKEN
.
Kana wakanganwa kuwedzera GitLab nharaunda zvinosiyana, dzokera kwatakatsanangura
PANTHEON_SITE
.
Kugadzira Dockerfile ine Terminus
Kana iwe usingashandise Docker kana usingade mafaera Dockerfile
, tora mufananidzo wangu registry.gitlab.com/ataylorme/pantheon-gitlab-blog-demo:latest
uye svetuka chikamu ichi.
Terminus ndeye PHP yekuraira mutsara chishandiso, saka ngatitange neiyo PHP mufananidzo. Ndiri kuisa Terminus kuburikidza neComposer, saka ndichashandisa Dockerfile
mune repository dhairekitori ine zvinotevera zvirimo:
# 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"
Tevedzera mirairo yekuunganidza uye kutumira mifananidzo kubva muchikamu Gadzira uye sunda mifananidzo Π² Dockerfile
uye kusundidzira kuGitLab.
Vhura chikamu Registry muGitLab chirongwa. Kana zvese zvikafamba maererano nehurongwa, mufananidzo wedu uchave uripo. Nyora pasi chinongedzo kune iyo tag yemufananidzo - isu tinoida iyo faira .gitlab-ci.yml
.
Chikamu script
mudambudziko deploy:multidev
iri kutanga kukura, saka ngatiiendese kune imwe faira. Gadzira faira idzva 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
Iyo script iri mune yakavanzika dhairekitori uye deploy:multidev
faira .gitlab-ci.yml
kuti zviitike sezvizvi:
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_requests
Isu tinofanirwa kuve nechokwadi chekuti mabasa edu anoitwa mumufananidzo wakagadzirwa, saka ngatiwedzere tsananguro image
kubva pakunyoresa URL kuenda .gitlab-ci.yml
. Nekuda kweizvozvo, takapedzisira tave nefaira rakadai .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_requests
Wedzera, zvipira uye tumira private/multidev-deploy.sh
ΠΈ .gitlab-ci.yml
. Iye zvino tinodzokera kuGitLab uye tomirira kuti basa reCI/CD ripere. Iva nemoyo murefu: multidev inogona kutora maminetsi akati wandei kugadzira.
Zvadaro tinoenda kunotarisa multidev runyorwa paPantheon. Oh chishamiso! Multidev nharaunda mr-2
ndatova pano.
mhedziso
Chikwata changu chakanakidzwa zvakanyanya patakatanga kuvhura zvikumbiro zvekubatanidza uye kugadzira nharaunda otomatiki.
Nezvishandiso zvine simba zveGitLab nePantheon, unogona kubatanidza GitLab kuPantheon otomatiki.
Sezvo isu tichishandisa GitLab CI/CD, yedu yekufambisa ichave nenzvimbo yekukura. Heano mamwe mazano ekuti iwe utange:
- Wedzera danho rekugadzira.
- Wedzera otomatiki bvunzo.
- Wedzera basa kuti uve nechokwadi chekuti zviyero zvekodhi zvazadzikiswa.
- Wedzera
dynamic application kuchengetedza bvunzo .
Tizivise zvaunofunga nezveGitLab, Pantheon uye otomatiki.
PS Waizviziva here kuti Terminus, Pantheon's command line tool,
Isu paPantheon taita basa rakanaka pavhezheni 2 yedu build:project:create
Iwe unongoda Pantheon tokeni uye GitLab tokeni. Achaendesa imwe yemapurojekiti emuenzaniso neComposer uye otomatiki kuyedza, kugadzira purojekiti nyowani muGitLab, saiti itsva yePantheon, uye ovabatanidza vachishandisa nharaunda dzakasiyana uye makiyi eSSH.
Nezvomunyori
Andrew Taylor anogadzira zvishandiso zvevagadziri mukati
Source: www.habr.com