Umyili wethu wezixhobo zomphuhlisi weendwendwe ePantheon uthetha malunga nendlela yokwenza i-WordPress deployments usebenzisa iGitLab CI/CD.
Π
Ndihlala ndibona abaphuhlisi bezabalaza ngomncedisi omnye weqonga.
Kuluyolo ukulinda ixesha lakho lokusebenzisa iseva ephakathi okanye uthumele abathengi i-URL enenqaku: "Jonga apha, kodwa ungajongi apha okwangoku."
Kodwa iPantheon ayinazo izixhobo zolawulo loguqulelo okanye ukuhlanganiswa okuqhubekayo kunye nokusasazwa (CI/CD). Kodwa liqonga eliguquguqukayo onokuthi ngalo udibanise naziphi na izixhobo.
Ndikwaqaphele ukuba amaqela asebenzisa izixhobo ezithile zophuhliso, kunye nezahlukeneyo zokuhlanganisa kunye nokusasazwa.
Umzekelo, banezixhobo ezahlukeneyo zolawulo lwenguqulelo kunye neCI/CD. Kuya kufuneka ujikeleze kwaye utshintshe phakathi kwezixhobo zokuhlela ikhowudi kunye neengxaki zokuxilonga.
phezu
Ndiyayithanda i-automation, ndiye ndafunda indlela yokudibanisa i-Pantheon kwi-GitLab ukuze izibophelele kwisebe eliphambili kwi-GitLab zisiwe kwindawo ephambili yophuhliso e-Pantheon. Kwaye ukudibanisa izicelo kwi-GitLab kunokudala kwaye kuthumele ikhowudi kwiindawo ezininzi ze-multidev ePantheon.
Kwesi sifundo, ndiza kukuhamba ngendlela yokuseta unxibelelwano phakathi kweGitLab kunye nePantheon kwaye wenze iWordPress yakho kunye neDrupal workflow.
Ngokuqinisekileyo inokwenzeka,
Intshayelelo
Kule post, kufuneka uqonde ukuba i-Pantheon iphula isayithi nganye kwizinto ezintathu: ikhowudi, i-database, kunye neefayile.
Ikhowudi ibandakanya iifayile zeCMS ezifana ne-WordPress core, iiplagi, kunye nemixholo. Ezi fayile zilawulwa ngaphakathi
Iifayile kwiPantheon ziifayile zemidiya, oko kukuthi, imifanekiso yesiza. Ngokuqhelekileyo zilayishwa ngabasebenzisi kwaye iGit ayibahoyi.
Ukuqikelela
Iprojekthi yam kwiPantheon kunye neGitLab ibizwa ngokuba pantheon-gitlab-blog-demo
. Igama leprojekthi kufuneka libe lodwa. Apha siza kusebenza kunye nesayithi le-WordPress. Ungathatha iDrupal, kodwa kuya kufuneka utshintshe ezinye izinto.
Ndiza kusebenzisa
Yenza iprojekthi
Okokuqala, masidale
Ngoku
Ukuba izandla zakho zitshisa ukutshintsha into, umzekelo, susa okanye ungeze iiplagi, yiba nomonde. Indawo ayikaqhagamshelwa kwi-GitLab, kwaye sifuna ukuba lonke utshintsho lwekhowudi ludlule kwi-GitLab.
Nje ukuba sifake iWordPress, buyela kwideshibhodi yewebhusayithi yePantheon kwaye utshintshe indlela yophuhliso kwiGit.
Ukuzinikela kokuqala kwi-GitLab
Ngoku kufuneka udlulisele ikhowudi yokuqala ye-WordPress ukusuka kwindawo yePantheon ukuya kwiGitLab. Ukwenza oku, sidibanisa ikhowudi esuka kwindawo yokugcina iGit yesayithi yePantheon ekuhlaleni, kwaye siyithumele kwindawo yokugcina iGitLab.
Ukwenza kube lula kwaye kukhuseleke ngakumbi,
Ukwenza oku, fanisa indawo yePantheon ekuhlaleni ngokukopa umyalelo ovela kwiClone enendawo yeGit kwindawo yedeshbhodi.
Ukuba ufuna uncedo, funda amaxwebhu
Ngoku masitshintshe git remote origin
ukukhomba kwiGitLab endaweni yePantheon. Inokwenziwa ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ git remote
Masiye kwiprojekthi ye-GitLab kwaye sikope i-URL yogcino ukusuka kuluhlu lweClone kwiphepha leenkcukacha zeprojekthi. Masikhethe i-Clone nge-SSH ukhetho, kuba sele siqwalasele isitshixo se-SSH.
Ukungagqibeki git remote
kwikopi yendawo yendawo yokugcina ikhowudi - origin
. Oku kunokutshintshwa c git remote set-url origin [URL ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ GitLab]
, apho endaweni yezibiyeli sifaka eyona URL.
Ekugqibeleni, silungiselela git push origin master --force
ukutyhala ikhowudi yeWordPress ukusuka ePantheon ukuya kwiGitLab.
I--force option ifuneka kube kanye kuphela. Emva koko kumaqela
git push
ayizukubakho kwiGitLab.
Ukumisela iziqinisekiso kunye nezinto eziguquguqukayo
Khumbula ukuba songeze njani isitshixo se-SSH ekuhlaleni ukuze ungene kwi-Pantheon kunye ne-GitLab? Ithokheni ye-SSH ingasetyenziselwa ukungena kwi-GitLab kunye ne-Pantheon.
I-GitLab inamaxwebhu abalaseleyo. Masibone
Ngoku siza kugqibezela amanyathelo amabini okuqala: Masenze isibini sesitshixo se-SSH esitsha ekuhlaleni nge-ssh-keygen kwaye songeze isitshixo sabucala njengoguquko kwiprojekthi..
Emva koko siya kubuza SSH_PRIVATE_KEY
njani
Kwinqanaba lesithathu nesine siya kudala ifayile .gitlab-ci.yml
ngomxholo onje:
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"
Masingayifaki ifayile okwangoku .gitlab-ci.yml
, ngoko kuya kufuneka ukuba wongeze enye into kuyo.
Ngoku senza inyathelo lesihlanu kwaye yongeza isitshixo sikawonke-wonke osidale kwisinyathelo sokuqala kwiinkonzo ofuna ukufikelela kuzo kwindawo yokwakha.
Kwimeko yethu, sifuna ukufikelela kwiPantheon esuka kwiGitLab. Silandela imiyalelo kuxwebhu lwePantheon kwi
Khumbula: i-SSH yabucala ikwi-GitLab, i-SSH evulekileyo ikwi-Pantheon.
Masiseke ezinye iinguqu ezimbalwa zokusingqongileyo. Eyokuqala ibizwa nge-PANTHEON_SITE. Ixabiso layo ligama lendawo yePantheon kumatshini wakho.
Igama kumatshini zidweliswe ekupheleni kweClone enomyalelo weGit. Sele uzenzele isiza ekuhlaleni, ke eli izakuba ligama lovimba wogcino wendawo.
Okulandelayo, makhe sisete ukuguquguquka kokusingqongileyo PANTHEON_GIT_URL
. Le yi-URL yogcino lweGit yesiza sePantheon esele siyisebenzisile.
Ngenisa kuphela i-URL yogcino lwe-SSH, ngaphandle
git clone
kunye negama lesiza kumatshini ekupheleni.
Phew. Igqityiwe, ngoku sinokuyigqiba ifayile yethu .gitlab-ci.yml
.
Yenza umsebenzi wokusasaza
Into esiza kube siyenza ngeGitLab CI ifana kakhulu nale siyenzileyo ngogcino lweGit kwixesha elidlulileyo. Kodwa ngeli xesha, masiyongeze indawo yokugcina iPantheon njengomthombo wesibini okude weGit, kwaye emva koko utyhale ikhowudi ukusuka kwiGitLab ukuya kwiPantheon.
Ukwenza oku, makhe siqwalasele deploy
ΠΈ deploy:dev
, kuba siya kuhambisa kwindawo yophuhliso kwi-Pantheon. Ifayile enesiphumo .gitlab-ci.yml
iya kubonakala ngathi:
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
Izinto eziguquguqukayo SSH_PRIVATE_KEY, PANTHEON_SITE
ΠΈ PANTHEON_GIT_URL
kufuneka ibonakale iqhelekile- simisela ezi ziguquguqukayo zemeko-bume kwangaphambili. Ngolu tshintsho siya kuba nakho ukusebenzisa amaxabiso kwifayile .gitlab-ci.yml
amaxesha amaninzi, kwaye baya kufuna kuphela ukuhlaziywa kwindawo enye.
Ekugqibeleni, yongeza, yenza kwaye uthumele ifayile .gitlab-ci.yml
kwiGitLab.
Ukujonga ukusasazwa
Ukuba senze yonke into ngokuchanekileyo, umsebenzi deploy:dev
iya kuqhuba ngempumelelo kwi-GitLab CI/CD kwaye ingenise isibophelelo .gitlab-ci.yml
ePantheon. Makhe sijonge.
Ukuthumela isicelo sokudibanisa imisonto kwiPantheon
Apha siza kusebenzisa iPantheon endiyithandayo β
Okokuqala masenze isebe elitsha leGit ekuhlaleni sisebenzisa git checkout -b multidev-support
. Ngoku masitshintshe into kwakhona .gitlab-ci.yml
.
Ndithanda ukubandakanya inombolo yesicelo sokudibanisa kwigama lokusingqongileyo lePantheon. Umzekelo, isicelo sokuqala sokudibanisa si mr-1
, Isibini - mr-2
njl.
Isicelo sokudibanisa siyatshintsha, ngoko ke kufuneka simisele ngokuguquguqukayo amagama esebe lePantheon. Kulula kwi-GitLab- kufuneka nje usebenzise
Singathatha $CI_MERGE_REQUEST_IID
ukucacisa inombolo yesicelo sokudibanisa. Masisebenzise konke oku kunye nezinto eziguquguqukayo zokusingqongileyo esizichazile ngaphambili kwaye songeze i-deploy entsha: umsebenzi wemultidev ekupheleni kwefayile. .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
Iya kufana nomsebenzi wethu deploy:dev
, kuphela isebe elithunyelwa ePantheon, kungekhona master
.
Songeze kwaye sayibophelela ifayile ehlaziyiweyo .gitlab-ci.yml
, kwaye ngoku masityhale isebe elitsha kwiGitLab ngalo git push -u origin multidev-support
.
Ngoku masenze isicelo esitsha sokudibanisa kwisebe multidev-support
ngokucinezela Yenza isicelo sokudibanisa.
Ukudala isicelo sokudibanisa, sijonga indlela umsebenzi weCI/CD owenziwe ngayo deploy:multidev
.
Jonga, umsonto omtsha uthunyelwe ePantheon. Kodwa ukuba siya kwicandelo le-multidev kwideshibhodi yesayithi yePantheon, asiyi kubona indawo entsha apho.
Makhe sijonge icandelo lamaSebe eGit.
Ngenxa yoko, intambo yethu mr-1
waya ePantheon. Masenze imeko-bume evela kwisebe mr-1
.
Senze imeko-bume ye-multidev, ngoku masibuyele kwi-GitLab kwaye sijonge icandelo Imisebenzi > Okusingqongileyo. Siza kubona amangenelo dev
ΠΈ mr-1
.
Oku kungenxa yokuba songeze ingeniso environment
Ngegama name
ΠΈ url
kwimisebenzi yeCI/CD. Ukuba sicofa kwi icon evulekileyo yokusingqongileyo, siya kuthathwa kwi-URL yendawo ye-multidev kwi-Pantheon.
Yenza indalo ye-multidev ngokuzenzekelayo
Ngokomgaqo, unokuma apha kwaye ukhumbule nje ukwenza imeko-bume ye-multidev kwisicelo ngasinye sokudibanisa, kodwa le nkqubo inokuzenzekela.
I-Pantheon inesixhobo somgca womyalelo
Sidinga isicelo esitsha sokudibanisa ukuvavanya oku. Masenze isebe elitsha sisebenzisa git checkout -b auto-multidev-creation
.
Ukusebenzisa i-Terminus kwimisebenzi ye-GitLab CI/CD, udinga ithokheni yomatshini ukuze ungqinwe nge-Terminus kunye nomfanekiso wesikhongozeli one-Terminus.
PANTHEON_MACHINE_TOKEN
.
Ukuba ulibele ukuba ungazongeza njani izinto eziguquguqukayo ze-GitLab, buyela apho besichazile
PANTHEON_SITE
.
Ukwenza iDockerfile nge-terminus
Ukuba awusebenzisi iDocker okanye awuzithandi iifayile Dockerfile
, wuthathe umfanekiso wam registry.gitlab.com/ataylorme/pantheon-gitlab-blog-demo:latest
kwaye utsibe eli candelo.
I-terminus sisixhobo somyalelo we-PHP, ngoko ke masiqale ngomfanekiso we-PHP. Ndifaka i-Terminus ngokusebenzisa uMqambi, ngoko ke ndiza kusebenzisa Dockerfile
kuvimba wogcino wasekuhlaleni onesiqulatho silandelayo:
# 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"
Landela imiyalelo yokudibanisa kunye nokuthumela imifanekiso esuka kwicandelo Yakha kwaye utyhale imifanekiso Π² Dockerfile
kwaye uyityhale kwiGitLab.
Vula icandelo Registry kwiprojekthi yeGitLab. Ukuba yonke into ihambe ngokwesicwangciso, umfanekiso wethu uya kuba lapho. Bhala phantsi ikhonkco kwithegi yomfanekiso - siyifunela ifayile .gitlab-ci.yml
.
Icandelo script
kwingxaki deploy:multidev
iqala ukukhula, ngoko ke masiyihambise kwifayile eyahlukileyo. Yenza ifayile entsha 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
Iscript sikuvimba weefayili wabucala kwaye deploy:multidev
ifayile .gitlab-ci.yml
ukuze kwenzeke ngolu hlobo:
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
Kufuneka siqinisekise ukuba imisebenzi yethu yenziwa kumfanekiso wesiko owenziweyo, ngoko ke masenze ingcaciso image
ukusuka kwi-URL yobhaliso ukuya .gitlab-ci.yml
. Ngenxa yoko, sagqiba ekubeni nefayile efana nale .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
Yongeza, zibophelele kwaye uthumele private/multidev-deploy.sh
ΠΈ .gitlab-ci.yml
. Ngoku sibuyela kwi-GitLab kwaye silinde ukuba umsebenzi weCI/CD ugqitywe. Yiba nomonde: i-multidev inokuthatha imizuzu emininzi ukuyila.
Emva koko siya kujonga uluhlu lwe-multidev kwi-Pantheon. Owu ummangaliso! Ubume be-Multidev mr-2
sele ilapha.
isiphelo
Iqela lam lalonwabela ngakumbi xa sasiqala ukuvula izicelo zokudibanisa kunye nokudala iimeko ezingqongileyo ngokuzenzekelayo.
Ngezixhobo ezinamandla zeGitLab kunye nePantheon, unokuqhagamshela iGitLab kwiPantheon ngokuzenzekelayo.
Kuba sisebenzisa iGitLab CI/CD, ukuhamba kwethu komsebenzi kuya kuba nendawo yokukhula. Nazi iingcamango ezimbalwa ukuze uqalise:
- Yongeza inyathelo lokwakha.
- Yongeza uvavanyo oluzenzekelayo.
- Yongeza umsebenzi ukuqinisekisa ukuba imigangatho yekhowudi iyafezekiswa.
- Yongeza
uvavanyo oluguqukayo lokhuseleko lwesicelo .
Sazise ukuba ucinga ntoni ngeGitLab, iPantheon kunye ne-automation.
PS Ubusazi na ukuba iTerminus, isixhobo somyalelo wePantheon,
Thina ePantheon senze umsebenzi omhle kuguqulelo lwesi-2 lwethu build:project:create
Ufuna kuphela ithokheni yePantheon kunye nethokheni yeGitLab. Uza kuthumela enye yeeprojekthi zesampulu noMqambi kunye novavanyo oluzenzekelayo, enze iprojekthi entsha kwi-GitLab, indawo entsha yePantheon, kwaye azidibanise esebenzisa izinto eziguquguqukayo zendalo kunye nezitshixo ze-SSH.
Malunga nombhali
UAndrew Taylor wenza izixhobo zabaphuhlisi kwi
umthombo: www.habr.com