Umdali wethu wamathuluzi onjiniyela oyisivakashi e-Pantheon ukhuluma ngendlela yokwenza ukuthunyelwa kwe-WordPress ngokuzenzakalelayo usebenzisa i-GitLab CI/CD.
Π
Ngivame ukubona onjiniyela bezabalaza neseva eyodwa yesiteji.
Kuyinjabulo enkulu ukulinda ithuba lakho lokusebenzisa iseva emaphakathi noma uthumele amaklayenti i-URL enenothi: βBheka lapha, kodwa ungabheki lapha okwamanje.β
Kodwa i-Pantheon ayinawo amathuluzi okulawula inguqulo noma ukuhlanganiswa okuqhubekayo nokuthunyelwa (CI/CD). Kodwa isiteji esivumelana nezimo ongahlanganisa ngaso noma yimaphi amathuluzi.
Ngiphinde ngaqaphela ukuthi amathimba asebenzisa amathuluzi athile okuthuthukisa, nahlukile ukuze ahlanganise futhi asetshenziswe.
Isibonelo, banamathuluzi ahlukene okulawula inguqulo kanye ne-CI/CD. Kufanele uzulazule futhi ushintshe phakathi kwamathuluzi ukuze uhlele ikhodi futhi uhlole izinkinga.
In
Ngiyazithanda izinto ezizenzakalelayo, ngakho-ke ngifunde ukuxhuma i-Pantheon ku-GitLab ukuze ukuzibophezela egatsheni eliyinhloko ku-GitLab kutshalwe endaweni enkulu yokuthuthukiswa e-Pantheon. Futhi ukuhlanganisa izicelo ku-GitLab kungakha futhi kukhiphe ikhodi ezindaweni eziningi ze-multidev e-Pantheon.
Kulesi sifundo, ngizokukhombisa ukuthi ungamisa kanjani ukuxhumana phakathi kwe-GitLab ne-Pantheon futhi uthuthukise ukuhamba komsebenzi kwakho kwe-WordPress ne-Drupal.
Yebo kungenzeka,
Isingeniso
Kulokhu okuthunyelwe, udinga ukuqonda ukuthi i-Pantheon ihlukanisa isayithi ngalinye libe yizici ezintathu: ikhodi, isizindalwazi, namafayela.
Ikhodi ihlanganisa amafayela e-CMS afana ne-WordPress core, ama-plugin, nezindikimba. Lawa mafayela aphethwe ku-
Amafayela ku-Pantheon amafayela emidiya, okungukuthi, izithombe zesayithi. Ngokuvamile alayishwa abasebenzisi futhi i-Git iyaziba.
Ukuqagela
Iphrojekthi yami ku-Pantheon ne-GitLab ibizwa pantheon-gitlab-blog-demo
. Igama lephrojekthi kumele lihluke. Lapha sizosebenza nesayithi le-WordPress. Ungathatha i-Drupal, kodwa uzodinga ukushintsha ezinye izinto.
Ngizosebenzisa
Dala iphrojekthi
Okokuqala, masidale
Manje
Uma izandla zakho zilunywa ukushintsha okuthile, isibonelo, susa noma wengeze ama-plugin, yiba nesineke. Isayithi alikakaxhunywa ku-GitLab, futhi sifuna zonke izinguquko zekhodi zidlule ku-GitLab.
Uma sesifake i-WordPress, buyela kudeshibhodi yewebhusayithi ye-Pantheon futhi ushintshe imodi yokuthuthukisa ibe yi-Git.
Ukuzibophezela kokuqala ku-GitLab
Manje udinga ukudlulisa ikhodi yokuqala ye-WordPress usuka kusayithi le-Pantheon uye ku-GitLab. Ukwenza lokhu, sihlanganisa ikhodi esuka endaweni ye-Git yesayithi le-Pantheon endaweni yangakini, bese siyithumela endaweni yokugcina ye-GitLab.
Ukuze kube lula futhi kuphephe,
Ukwenza lokhu, fanisa iwebhusayithi ye-Pantheon endaweni ngokukopisha umyalo ovela kunkambu ye-Clone ene-Git kudeshibhodi yewebhusayithi.
Uma udinga usizo, funda imibhalo
Manje ake sishintshe git remote origin
ukukhomba i-GitLab esikhundleni se-Pantheon. Kungenziwa ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ git remote
Ake siye kuphrojekthi ye-GitLab futhi sikopishe i-URL yekhosombe kokwehliswayo kwe-Clone ekhasini lemininingwane yephrojekthi. Ake sikhethe inketho ye-Clone nge-SSH, ngoba sesivele silungiselele ukhiye we-SSH.
Ngokuzenzakalelayo git remote
ngekhophi yendawo yendawo yokugcina amakhodi - origin
. Lokhu kungashintshwa c git remote set-url origin [URL ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ GitLab]
, lapho esikhundleni sabakaki sifaka khona i-URL yangempela.
Ekugcineni, siyethula git push origin master --force
ukusunduza ikhodi ye-WordPress kusuka ku-Pantheon kuya ku-GitLab.
Inketho ye--force idingeka kanye kuphela. Bese kuba ngamaqembu
git push
ngeke ibe ku-GitLab.
Ukusetha izifakazelo neziguquguqukayo
Uyakhumbula ukuthi sengeze kanjani ukhiye we-SSH endaweni ukuze ungene ku-Pantheon ne-GitLab? Ithokheni ye-SSH ingasetshenziswa ukugunyaza i-GitLab ne-Pantheon.
I-GitLab inemibhalo emihle kakhulu. Asibone
Manje sizoqedela izinyathelo ezimbili zokuqala: Masidale ipheya entsha yokhiye we-SSH endaweni nge-ssh-keygen bese sengeza ukhiye oyimfihlo njengokuguquguquka kwephrojekthi..
Bese sizobuza SSH_PRIVATE_KEY
kanjani
Esinyathelweni sesithathu nesine sizokwakha ifayela .gitlab-ci.yml
ngokuqukethwe okufana nalokhu:
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"
Asingabophi ifayela okwamanje .gitlab-ci.yml
, khona-ke uzodinga ukwengeza enye into kuyo.
Manje senza isinyathelo sesihlanu futhi engeza ukhiye osesidlangalaleni owudalile esinyathelweni sokuqala kumasevisi odinga ukufinyelela kuwo endaweni yokwakha.
Esimweni sethu, sifuna ukufinyelela i-Pantheon kusuka ku-GitLab. Silandela imiyalelo embhalweni wePantheon on
Khumbula: i-SSH yangasese iku-GitLab, i-SSH evulekile iku-Pantheon.
Ake simise okunye okuguquguqukayo kwemvelo okumbalwa. Eyokuqala ibizwa nge-PANTHEON_SITE. Inani layo yigama lesayithi lePantheon emshinini wakho.
Igama emshinini lisohlwini ekugcineni kwe-Clone enomyalo we-Git. Usuvele uhlanganise isayithi endaweni, ngakho-ke leli kuzoba igama lenqolobane yenqolobane yendawo.
Okulandelayo, ake simise i-variable yemvelo PANTHEON_GIT_URL
. Le i-URL ye-Git repository yesayithi ye-Pantheon esesivele siyisebenzisile.
Faka kuphela i-URL yekhosombe le-SSH, ngaphandle
git clone
kanye negama lendawo emshinini ekugcineni.
Phew. Sesiqedile, manje sesingaqedela ifayela lethu .gitlab-ci.yml
.
Dala umsebenzi wokuthunyelwa
Esizobe sikwenza ekuqaleni nge-GitLab CI kufana kakhulu nalokho esikwenze ngamakhosombe e-Git esikhathini esidlule. Kodwa kulokhu, ake sengeze inqolobane ye-Pantheon njengomthombo wesibili oqhelile we-Git, bese siphusha ikhodi isuka ku-GitLab iye ku-Pantheon.
Ukuze wenze lokhu, ake silungiselele deploy
ΠΈ deploy:dev
, ngoba sizothumela endaweni yokuthuthukiswa ku-Pantheon. Ifayela eliwumphumela .gitlab-ci.yml
kuzobukeka kanjena:
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
Okuguquguqukayo SSH_PRIVATE_KEY, PANTHEON_SITE
ΠΈ PANTHEON_GIT_URL
kufanele ibukeke ijwayelekile - simise lezi zinhlobonhlobo zemvelo ngaphambili. Ngalokhu okuguquguqukayo sizokwazi ukusebenzisa amanani kufayela .gitlab-ci.yml
izikhathi eziningi, futhi zizodinga kuphela ukubuyekezwa endaweni eyodwa.
Ekugcineni, engeza, bophezela futhi uthumele ifayela .gitlab-ci.yml
ku-GitLab.
Ihlola ukusetshenziswa
Uma senze konke ngendlela efanele, umsebenzi deploy:dev
izosebenza ngempumelelo ku-GitLab CI/CD futhi ihambise isivumelwano .gitlab-ci.yml
e-Pantheon. Ake sibheke.
Ithumela uchungechunge lwesicelo sokuhlanganisa ku-Pantheon
Lapha sizosebenzisa isici sami engisithandayo sePantheon β
Okokuqala masenze igatsha le-Git elisha endaweni sisebenzisa git checkout -b multidev-support
. Manje ake siguqule okuthile futhi .gitlab-ci.yml
.
Ngithanda ukufaka inombolo yesicelo sokuhlanganisa egameni lemvelo le-Pantheon. Isibonelo, isicelo sokuqala sokuhlanganisa sithi mr-1
, okwesibili - mr-2
njll.
Isicelo sokuhlanganisa siyashintsha, ngakho-ke sidinga ukunquma ngokuguquguqukayo amagama egatsha e-Pantheon. Kulula ku-GitLab - udinga nje ukukusebenzisa
Singathatha $CI_MERGE_REQUEST_IID
ukucacisa inombolo yesicelo sokuhlanganisa. Masisebenzise konke lokhu kanye nokuguquguquka kwemvelo yomhlaba wonke esikushilo ekuqaleni bese sengeza ukuthunyelwa okusha:umsebenzi we-multidev ekugcineni kwefayela. .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
Kuzofana nomsebenzi wethu deploy:dev
, igatsha kuphela elithunyelwa ePantheon, hhayi master
.
Sengeze futhi sanikela ngefayela elibuyekeziwe .gitlab-ci.yml
, futhi manje ake siphushele igatsha elisha ku-GitLab ngalo git push -u origin multidev-support
.
Manje ake sakhe isicelo esisha sokuhlanganisa esivela egatsheni multidev-support
ngokuchofoza Dala isicelo sokuhlanganisa.
Ngemva kokudala isicelo sokuhlanganisa, sibheka ukuthi umsebenzi we-CI/CD wenziwa kanjani deploy:multidev
.
Bheka, uchungechunge olusha luthunyelwe ku-Pantheon. Kodwa uma siya esigabeni se-multidev kudeshibhodi yesayithi le-Pantheon, ngeke sibone indawo entsha lapho.
Ake sibheke ingxenye yeGit Branches.
Ngenxa yalokho, intambo yethu mr-1
wafika ePantheon. Ake sakhe indawo evela egatsheni mr-1
.
Senze indawo ye-multidev, manje ake sibuyele ku-GitLab futhi sibheke isigaba Imisebenzi > Imvelo. Sizobona imingenelo ye dev
ΠΈ mr-1
.
Lokhu kungenxa yokuthi sengeze okufakiwe environment
Ngegama name
ΠΈ url
emisebenzini ye-CI/CD. Uma sichofoza isithonjana sendawo evulekile, sizoyiswa ku-URL yendawo ye-multidev ku-Pantheon.
Yenza ngokuzenzakalela ukudalwa kwe-multidev
Empeleni, ungama lapha futhi ukhumbule nje ukudala indawo ye-multidev yesicelo ngasinye sokuhlanganisa, kodwa le nqubo ingenziwa ngokuzenzakalelayo.
I-Pantheon inethuluzi lomugqa womyalo
Sidinga isicelo esisha sokuhlanganisa ukuze sihlole lokhu. Ake sakhe igatsha elisha sisebenzisa git checkout -b auto-multidev-creation
.
Ukuze usebenzise i-Terminus emisebenzini ye-GitLab CI/CD, udinga ithokheni yomshini ukuze uqinisekise nge-Terminus kanye nesithombe sesitsha esine-Terminus.
PANTHEON_MACHINE_TOKEN
.
Uma ukhohlwe ukuthi ungangeza kanjani okuguquguqukayo kwemvelo ye-GitLab, buyela lapho sichazile
PANTHEON_SITE
.
Ukudala i-Dockerfile nge-Terminus
Uma ungasebenzisi i-Docker noma ungawathandi amafayela Dockerfile
, thatha isithombe sami registry.gitlab.com/ataylorme/pantheon-gitlab-blog-demo:latest
bese weqa lesi sigaba.
I-Terminus iyithuluzi lomugqa womyalo we-PHP, ngakho-ke ake siqale ngesithombe se-PHP. Ngifaka i-Terminus ngoMqambi, ngakho ngizosebenzisa Dockerfile
ohlwini lwemibhalo yenqolobane yasendaweni enokuqukethwe okulandelayo:
# 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 yokuhlanganisa nokuthumela izithombe ezivela esigabeni Yakha futhi uphushe izithombe Π² Dockerfile
bese uyiphushela ku-GitLab.
Vula isigaba Registry kuphrojekthi ye-GitLab. Uma konke kuhambe ngohlelo, isithombe sethu sizoba khona. Bhala phansi isixhumanisi sethegi yesithombe - siyidinga kufayela .gitlab-ci.yml
.
Isigaba script
enkingeni deploy:multidev
iqala ukukhula, ngakho-ke masiyihambise efayelini elihlukile. Dala ifayela elisha 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
Iskripthi sikuhla lwemibhalo oluyimfihlo futhi deploy:multidev
ifayela .gitlab-ci.yml
ukuze kwenzeke kanje:
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
Sidinga ukwenza isiqiniseko sokuthi imisebenzi yethu yenziwa ngesithombe sangokwezifiso esidaliwe, ngakho-ke ake sengeze incazelo image
kusuka ku-URL yokubhalisa kuya .gitlab-ci.yml
. Ngenxa yalokho, sigcine sinefayela elifana naleli .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
Engeza, bophezela futhi uthumele private/multidev-deploy.sh
ΠΈ .gitlab-ci.yml
. Manje sibuyela ku-GitLab futhi silinde ukuthi umsebenzi we-CI/CD uqedele. Yiba nesineke: i-multidev ingathatha imizuzu embalwa ukuyidala.
Bese sibheka uhlu lwe-multidev ku-Pantheon. Oh isimangaliso! Multidev imvelo mr-2
vele lapha.
isiphetho
Ithimba lami libe nokujabula okwengeziwe lapho siqala ukuvula izicelo zokuhlanganisa nokudala izindawo ngokuzenzakalelayo.
Ngamathuluzi anamandla e-GitLab ne-Pantheon, ungakwazi ukuxhuma i-GitLab ku-Pantheon ngokuzenzakalelayo.
Njengoba sisebenzisa i-GitLab CI/CD, ukuhamba kwethu komsebenzi kuzoba nendawo yokukhula. Nansi imibono embalwa ukuze uqale:
- Engeza isinyathelo sokwakha.
- Engeza ukuhlola okuzenzakalelayo.
- Engeza umsebenzi ukuze uqinisekise ukuthi amazinga ekhodi ayafinyelelwa.
- Faka
ukuhlolwa kokuphepha kohlelo lokusebenza okunamandla .
Sazise ukuthi ucabangani nge-GitLab, i-Pantheon ne-automation.
PS Ubuwazi ukuthi i-Terminus, ithuluzi lomugqa womyalo we-Pantheon,
Thina kwa-Pantheon senze umsebenzi omuhle enguqulweni yesi-2 yethu build:project:create
Udinga kuphela ithokheni ye-Pantheon kanye nethokheni ye-GitLab. Uzosebenzisa iphrojekthi eyodwa yesampula noMqambi nokuhlola okuzenzakalelayo, adale iphrojekthi entsha ku-GitLab, isiza esisha se-Pantheon, futhi awaxhume esebenzisa okuguquguqukayo kwendawo kanye nokhiye be-SSH.
Mayelana nomlobi
U-Andrew Taylor udala amathuluzi onjiniyela ku
Source: www.habr.com