
Aaladaha soo-saare martidayada ee Pantheon wuxuu ka hadlayaa sida otomaatig loogu sameeyo geynta WordPress iyadoo la adeegsanayo GitLab CI/CD.
В Waxaan ka shaqeeyaa cilaaqaadka horumariyaha, marka waxaan had iyo jeer raadiyaa habab cusub oo aan ku caawiyo WordPress iyo horumariyeyaasha Drupal inay xalliyaan mashaakilaadka automation-ka ee socodkooda shaqo. Si tan loo sameeyo, waxaan jeclahay in aan tijaabiyo qalab cusub oo aan isku daro midba midka kale si aan si hufan ugu shaqeeyo.
Waxaan inta badan arkaa horumariyayaal la halgamaya hal server.
Aad bay ugu faraxsan tahay inaad sugto wakhtigaaga si aad u isticmaasho server dhexdhexaad ah ama u soo dir macaamiisha URL qoraal ah: "Halkan eeg, laakiin weli ha eegin halkan."
- mid ka mid ah qalabka Pantheon ee qabow - wuxuu xalliyaa dhibaatadan, sababtoo ah iyaga waxaad u abuuri kartaa jawiyo laamaha Git ee baahida. Deegaan kasta oo multidev ah wuxuu leeyahay URL u gaar ah iyo xogta xogta, si horumariyayaashu ay u shaqayn karaan si aamusnaan ah, hubinaya tayada, oo ay heli karaan oggolaansho iyaga oo aan ku tallaabsan midba midka kale lugihiisa.
Laakiin Pantheon ma haysto qalab loogu talagalay xakamaynta nooca ama is-dhexgalka joogtada ah iyo geynta (CI/CD). Laakiin waa madal dabacsan oo aad ku dhex dari karto qalab kasta.
Waxa kale oo aan ogaaday in kooxuhu ay u isticmaalaan qalabyada qaarkood horumarinta, iyo kuwo kala duwan oo loogu talagalay isu-ururinta iyo geynta.
Tusaale ahaan, waxay haystaan qalab kala duwan oo loogu talagalay xakamaynta nooca iyo CI/CD. Waa inaad dhexda u gasho oo aad u kala beddeshaa qalabka si aad u saxdo koodka oo aad u ogaato dhibaatooyinka.
In Waxaa jira qalab horumarineed oo buuxa: kantaroolka nooca, tigidhada, codsiyada isku-dhafka, tuubada CI/CD ee ugu heerka wanaagsan, diiwaanka weelka, iyo wax kasta oo la mid ah. Wali ma aanan la kulmin arji bixiya wax badan oo lagu maareeyo socodka shaqadaada horumarineed.
Waxaan jeclahay automation-ka, sidaa darteed waxaan bartay sida loogu xiro Pantheon iyo GitLab si ay u go'aansato laanta ugu weyn ee GitLab in la geeyo deegaanka horumarka ugu weyn ee Pantheon. Iyo isku darka codsiyada GitLab waxay abuuri kartaa oo geyn kartaa koodka deegaanka badan ee Pantheon.
Casharradan, waxaan kugu dhex socon doonaa sida loo sameeyo xidhiidh ka dhexeeya GitLab iyo Pantheon oo aan u wanaajiyo socodkaaga shaqada ee WordPress iyo Drupal.
Dabcan waa suurtogal, , laakiin wax walba waxaan ku samayn doonaa gacmaheena si aan u dhex galno mustaqbalkana u isticmaal qalabkan oo kaliya ma aha in la geeyo.
Horudhac
Boostada, waxaad u baahan tahay inaad fahamto in Pantheon uu u kala jabiyo goob kasta saddex walxood: kood, xog ururin, iyo faylal.
Koodhka waxaa ku jira faylalka CMS sida WordPress core, plugins, iyo mawduucyada. Faylashan waxaa lagu maamulaa gudaha , uu martigeliyay Pantheon, taasoo la macno ah inaan geyn karno koodka GitLab ilaa Pantheon oo wata Git.
Faylasha ku jira Pantheon waa faylal warbaahineed, taas oo ah, sawirada goobta. Caadi ahaan waxaa soo geliya isticmaalayaasha Gitna wuu iska indhatiraa.
, wax badan ka ogow ama ee pantheon.io.
Malaha
Mashruucayga Pantheon iyo GitLab waa la yaqaan pantheon-gitlab-blog-demo. Magaca mashruuca waa inuu noqdaa mid gaar ah. Halkan waxaan la shaqayn doonaa site WordPress ah. Waad qaadan kartaa Drupal, laakiin waxaad u baahan doontaa inaad wax ka bedesho.
waan isticmaali doonaa waadna ka shaqayn kartaa , haddii aad rabto in aad.
Samee mashruuc
Marka hore, aynu abuurno (kan dambe ayaan ku soo laaban doonaa).
Hadda . Kadibna waxaan ku rakibnaa WordPress dashboardka goobta.
Haddii gacmahaagu ay cuncunayaan si ay wax u beddelaan, tusaale ahaan, ka saar ama ku daraan plugins, dulqaado. Goobtu wali kuma xidhna GitLab, waxaanan rabnaa in dhammaan isbeddellada koodka ay maraan GitLab.
Marka aan rakibno WordPress, ku noqo bogga Pantheon dashboardka oo u beddel habka horumarinta Git.
Ballanqaadka ugu horreeya ee GitLab
Hadda waxaad u baahan tahay inaad ka wareejiso koodhka hore ee WordPress ka goobta Pantheon una wareejiso GitLab. Si tan loo sameeyo, waxaan ka xireynaa koodka keydka Git ee goobta Pantheon gudaha, ka dibna waxaan u direynaa keydka GitLab.
Si loo fududeeyo oo loo ilaaliyo mana yeeli doono inaan galno furaha sirta ah mar kasta oo aan xidhno kaydka Pantheon Git. Isla mar horeba .
Si tan loo sameeyo, xidho degelka Pantheon gudaha adiga oo koobiyeynaya amarka Clone oo leh goobta Git ee dashboardka websaydhka.
Haddii aad u baahan tahay caawimo, akhri dukumentiyada .
Hadda aan beddelno git remote originSi aad u tilmaanto GitLab halkii Pantheon. Waa la samayn karaa .
Aan tagno mashruuca GitLab oo aan koobiyeeyo URL-ka kaydka ah ee hoos u dhaca Clone ee bogga faahfaahinta mashruuca. Aynu doorano Clone oo leh ikhtiyaarka SSH, sababtoo ah waxaan mar hore habaysannay furaha SSH.
by default git remote nuqul maxalli ah oo ah kaydka koodka - origin. Tan waa la bedeli karaa c git remote set-url origin [URL репозитория GitLab], halkaas oo beddelka biraha aan galno URL-ka dhabta ah.
Ugu dambeyntii, waxaan bilaabi git push origin master --forcesi aad u riixdo koodhka WordPress ee Pantheon ilaa GitLab.
Xulashada xoogga ayaa loo baahan yahay hal mar oo keliya. Kadibna koox ahaan
git pushkuma jiri doonto GitLab.
Dejinta aqoonsiga iyo doorsoomayaasha
Xusuusnow sida aan ugu darnay furaha SSH gudaha si aan u galno Pantheon iyo GitLab? Calaamadda SSH waxaa loo isticmaali karaa in lagu oggolaado GitLab iyo Pantheon.
GitLab wuxuu leeyahay dukumeenti aad u fiican. Aan aragno .
Waxaan hadda dhamaystiri doonaa labada tallaabo ee hore: Aynu abuurno lammaane cusub oo SSH ah gudaha gudaha oo wata ssh-keygen oo ku dar furaha gaarka ah doorsoome ahaan mashruuca.
Markaas ayaan weydiin doonaa SSH_PRIVATE_KEY sida goobaha mashruuca.
Tallaabooyinka saddexaad iyo afraad waxaan abuuri doonaa fayl .gitlab-ci.yml oo xambaarsan nuxurka sida tan:
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"Yaynaan gelin weli faylka .gitlab-ci.yml, markaas waxaad u baahan doontaa inaad wax kale ku darto.
Hadda waxaan samaynaa tallaabada shanaad iyo ku dar furaha dadweynaha ee aad samaysay tallaabadii ugu horreysay adeegyada aad u baahan tahay inaad ka hesho deegaanka dhismaha.
Xaaladeena, waxaan rabnaa inaan Pantheon ka galno GitLab. Waxaan raacnaa tilmaamaha ku jira dukumeentiga Pantheon on oo samee tallaabadan.
Xusuusnow: SSH gaarka ah wuxuu ku yaal GitLab, SSH furan wuxuu ku yaal Pantheon.
Aynu dejinno dhowr doorsoomayaal deegaan oo kale. Midka hore waxaa la yiraahdaa PANTHEON_SITE. Qiimaheedu waa magaca goobta Pantheon ee mashiinkaaga.
Magaca mashiinka wuxuu ku qoran yahay dhamaadka Clone ee leh amarka Git. Waxaad horeyba u xidhidhisay goobta maxali ahaan, marka tani waxay noqon doontaa magaca hagaha kaydka deegaanka.
Marka xigta, aynu dejino doorsoomayaasha deegaanka PANTHEON_GIT_URL. Kani waa URL kaydka Git ee goobta Pantheon ee aan horay u isticmaalnay.
Geli kaliya URL kaydka SSH, la'aanteed
git cloneiyo magaca goobta mashiinka ee dhamaadka.
Phew. Taasi waa la sameeyay, hadda waanu dhamayn karnaa faylkayaga .gitlab-ci.yml.
Samee hawl geyn
Waxa aan marka hore ku samayn doono GitLab CI waxay aad ula mid tahay wixii aan ku samaynay kaydka Git ee la soo dhaafay. Laakiin markan waxaan ku dari doonaa kaydka Pantheon sidii il labaad oo Git ah oo fog, ka dibna koodka ka riix GitLab una dir Pantheon.
Si tan loo sameeyo, aynu habaynno deploy и deploy:dev, sababtoo ah waxaan u diri doonaa deegaanka horumarinta ee Pantheon. Faylka soo baxay .gitlab-ci.yml sidan oo kale:
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:
- masterKala duwanaansho SSH_PRIVATE_KEY, PANTHEON_SITE и PANTHEON_GIT_URL Waa inay u ekaato mid la yaqaan - waxaynu hore u dejinay doorsoomayaasha deegaanka. Doorsoomayaashan waxaan awood u yeelan doonnaa inaan isticmaalno qiyamka faylka .gitlab-ci.yml marar badan, waxayna u baahan doonaan oo kaliya in lagu cusboonaysiiyo hal meel.
Ugu dambeyntii, ku dar, samee oo dir faylka .gitlab-ci.yml ku yaal GitLab.
Hubinta geynta
Haddii aan wax walba si sax ah u samaynay, hawsha deploy:dev wuxuu si guul leh ugu socon doonaa GitLab CI/CD wuxuuna soo gudbin doonaa ballan .gitlab-ci.yml ee Pantheon. Aan eegno.
U diraya taxanaha codsiga isku dhafka Pantheon
Halkan waxaan ku isticmaali doonaa qaabka Pantheon-ka aan jeclahay - , halkaas oo aad ka abuuri karto deegaan Pantheon dheeraad ah laamaha Git ee baahida.
, markaa qaybtan waa la dhaafi karaa. Laakiin haddii aad marin u leedahay, waxaad si dhab ah u kordhin kartaa wax soo saarka adiga oo si toos ah u dejinaya abuurista jawiga badan ee Pantheon ee codsiyada isku darka GitLab.
Marka hore aynu samayno laan cusub oo Git ah gudaha annagoo adeegsanayna git checkout -b multidev-support. Hadda aan mar kale wax ku beddelno gudaha .gitlab-ci.yml.
Waxaan jeclahay in aan ku daro lambarka codsiga isku darka magaca deegaanka Pantheon. Tusaale ahaan, codsiga isku darka ugu horreeya waa mr-1, labaad - mr-2 iwm.
Codsiga isku-dhafka ayaa isbedelaya, marka waxaan u baahanahay inaan si firfircoon u go'aamino magacyada laanta Pantheon. Way ku fududahay GitLab - kaliya waxaad u baahan tahay inaad isticmaasho .
Waan qaadan karnaa $CI_MERGE_REQUEST_IIDsi loo qeexo lambarka codsiga isku darka. Aynu ku dabaqno waxaas oo dhan iyada oo ay la socoto doorsoomayaasha deegaanka ee caalamiga ah ee aan horay u soo sheegnay oo aan ku darno geyn cusub: hawsha multitidev dhamaadka faylka .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_requestsWaxay la mid noqon doontaa hawshayada deploy:dev, kaliya laanta ayaa loo diraa Pantheon, looma diro master.
Waxaanu ku darnay oo aanu galnay faylka la cusboonaysiiyay .gitlab-ci.yml, oo hadda aan ku riixno laan cusub GitLab leh git push -u origin multidev-support.
Hadda aynu ka abuurno codsi cusub oo ku biirista laanta multidev-supportadigoo gujinaya Abuur codsi isku darka.
Markaan abuurnay codsiga isku-dhafka, waxaan eegnaa sida hawsha CI/CD loo fuliyo deploy:multidev.
Fiiri, dun cusub ayaa loo diray Pantheon. Laakiin haddii aan tagno qaybta multidev ee bogga Pantheon dashboard, ma arki doonno jawiga cusub ee halkaas.
Aynu eegno qaybta Git Branches.
Natiijo ahaan, dunteena mr-1 waxay tagtay Pantheon. Aan deegaan ka abuurno laan mr-1.
Waxaan abuurnay jawi multidev ah, hadda aan ku noqonno GitLab oo aan eegno qaybta Hawlgallada > Deegaanka. Waxaan arki doonaa gelida loogu talagalay dev и mr-1.
Tani waa sababta oo ah waxaan ku darnay gelitaan environment Magac leh name и url galay hawlaha CI/CD. Haddii aan gujino astaanta jawiga furan, waxaa naloo geyn doonaa URL-ka deegaanka multidev ee Pantheon.
Si otomaatig ah u samee abuurista multidev
Mabda 'ahaan, waxaad ku joojin kartaa halkan oo kaliya xusuusnow inaad abuurto jawi multidev codsi kasta oo isku-dhafka ah, laakiin habkan si toos ah ayaa loo samayn karaa.
Pantheon wuxuu leeyahay aaladda khadka taliska , halkaas oo aad si toos ah ula shaqayn karto madal. Terminus wuxuu kuu ogolaanayaa inaad ka abuurto deegaan multidev khadka taliska - ku habboon .
Waxaan u baahanahay codsi cusub oo isku darka si loo tijaabiyo tan. Aan abuurno laan cusub anagoo adeegsanayna git checkout -b auto-multidev-creation.
Si aad u isticmaasho Terminus gudaha GitLab CI/CD, waxaad u baahan tahay calaamada mishiinka si loogu xaqiijiyo Terminus iyo sawirka weelka leh Terminus.
, ku keydi meel nabdoon oo ku dar sida doorsoomayaasha deegaanka ee GitLab oo leh magaca PANTHEON_MACHINE_TOKEN.
Haddii aad illowday sida loogu daro doorsoomayaasha deegaanka GitLab, ku noqo halka aan ku qeexnay
PANTHEON_SITE.
Abuuritaanka Dockerfile leh Terminus
Haddii aadan isticmaalin Docker ama aadan jeclayn faylasha Dockerfile, sawirkeyga qaado registry.gitlab.com/ataylorme/pantheon-gitlab-blog-demo:latest oo ka bood qaybtan.
, halkaas oo aan ka dhisi karno oo aan ku dhejin karno Dockerfile ee mashruucayaga. Aan abuurno Dockerfile leh Terminus si aan ula shaqeyno Pantheon.
Terminus waa aaladda khadka taliska PHP, markaa aan ku bilowno sawirka PHP. Waxaan ku rakibayaa Terminus iyada oo loo marayo laxamiistaha, markaa waan isticmaali doonaa . Waxaan abuurnaa Dockerfile ku jira tusaha kaydka deegaanka oo leh nuxurka soo socda:
# 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"Raac tilmaamaha isku xirka iyo dirida sawirada qaybta Dhis oo riix sawirada в si ay sawir uga soo ururiyaan Dockerfile oo u riix GitLab.
Furitaanka qaybta Diiwaangelinta ee mashruuca GitLab. Haddii wax walba u dhaceen sidii qorshuhu ahaa, sawirkayagu wuu jiri doonaa. Qor xiriirinta sawirka sawirka - waxaan u baahanahay faylka .gitlab-ci.yml.
Qaybta script dhibaatada deploy:multidev wuxuu bilaabayaa inuu koro, markaa aan u guurno fayl gaar ah. Samee fayl cusub 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..."
fiQoraalku wuxuu ku yaalaa hage gaar ah iyo . Waxaan u haynaa qoraal macquul ah multidev. Aynu hadda cusboonaysiinno qaybta deploy:multidev fayl .gitlab-ci.ymlsi ay u noqoto sidan:
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_requestsWaxaan u baahanahay inaan hubinno in hawlaheenna lagu fuliyay sawirka gaarka ah ee la abuuray, markaa waxaan ku dari doonnaa qeexitaan image laga bilaabo URL diiwaanka ilaa .gitlab-ci.yml. Natiijo ahaan, waxaan ku dhameynay faylka sidan oo kale ah .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_requestsKu dar, ballan oo dir private/multidev-deploy.sh и .gitlab-ci.yml. Hadda waxaan ku laabanaa GitLab oo aan sugayna hawsha CI/CD inay dhammayso. Samir samee: multidev waxay qaadan kartaa dhowr daqiiqo si ay u abuurto.
Markaa waxaan eegnaa liiska multidev ee Pantheon. Alla mucjiso! Deegaanka Multidev mr-2 mar hore halkan.
gunaanad
Kooxdaydu waxay lahayd madadaalo badan markii aan bilownay furitaanka codsiyada isku darka iyo abuurista jawi si toos ah.
Aaladaha xoogga badan ee GitLab iyo Pantheon, waxaad si toos ah ugu xidhi kartaa GitLab Pantheon.
Maadaama aan isticmaalno GitLab CI/CD, socodka shaqadeenu wuxuu yeelan doonaa meel uu ku koro. Halkan waxaa ah dhowr fikradood oo aad ku bilaabi karto:
- Ku dar tallaabo dhis
- Ku dar imtixaan otomaatig ah
- Ku dar hawl si aad u hubiso in heerarka kood la buuxiyey.
- Ku dar .
Noo sheeg waxa aad ka qabto GitLab, Pantheon iyo automation.
PS Ma ogtahay in Terminus, Pantheon's line line tool, ?
Anaga hadaan nahay Pantheon shaqo fiican ayaan ka qabanay nooca 2 eeyada oo leh taageerada GitLab. Haddii aadan rabin inaad ku dhibto dejinta mashruuc kasta, isku day plugin-kan oo naga caawi tijaabinta v2 beta. Kooxda Terminus build:project:create Waxa kaliya oo aad u baahan tahay calaamada Pantheon iyo GitLab token. Waxay geyn doontaa mid ka mid ah mashaariicda muunada leh Laxanka iyo tijaabinta otomaatiga ah, waxay ku abuuri doontaa mashruuc cusub GitLab, goobta Pantheon cusub, oo ay ku xidhi doonto iyada oo adeegsanaysa doorsoomayaasha deegaanka iyo furayaasha SSH.
Ku saabsan qoraaga
Andrew Taylor waxa uu u abuuraa agabka horumariyayaasha gudaha .
Source: www.habr.com
