ProHoster > Blog > Pangangasiwa > Paano Ikonekta ang GitLab at Pantheon at I-optimize ang Drupal at WordPress Workflows
Paano Ikonekta ang GitLab at Pantheon at I-optimize ang Drupal at WordPress Workflows
Ang aming guest developer tools creator sa Pantheon ay nagsasalita tungkol sa kung paano i-automate ang mga deployment ng WordPress gamit ang GitLab CI/CD.
Π Panteon Nagtatrabaho ako sa mga relasyon ng developer, kaya palagi akong naghahanap ng mga bagong paraan upang matulungan ang mga developer ng WordPress at Drupal na malutas ang mga problema sa automation sa kanilang mga daloy ng trabaho. Upang gawin ito, gusto kong mag-eksperimento sa mga bagong tool at pagsamahin ang mga ito sa isa't isa upang gumana nang epektibo.
Madalas kong nakikita ang mga developer na nahihirapan sa iisang staging server.
Napakasayang maghintay sa iyong pagkakataon na gumamit ng intermediate server o magpadala sa mga kliyente ng URL na may talang: "Tingnan dito, ngunit huwag tumingin dito."
Multidev na kapaligiran - isa sa mga cool na tool ng Pantheon - nilulutas ang problemang ito, dahil sa mga ito maaari kang lumikha ng mga kapaligiran para sa mga sangay ng Git kapag hinihiling. Ang bawat multidev na kapaligiran ay may sariling URL at database, kaya ang mga developer ay maaaring gumana nang tahimik, suriin ang kalidad, at makakuha ng pag-apruba nang hindi tumutuntong sa bawat isa.
Ngunit ang Pantheon ay walang mga tool para sa kontrol ng bersyon o patuloy na pagsasama at pag-deploy (CI/CD). Ngunit ito ay isang nababaluktot na platform kung saan maaari mong isama ang anumang mga tool.
Napansin ko rin na ang mga koponan ay gumagamit ng ilang partikular na tool para sa pag-unlad, at iba-iba para sa pagpupulong at pag-deploy.
Halimbawa, mayroon silang iba't ibang mga tool para sa kontrol ng bersyon at CI/CD. Kailangan mong maglikot at magpalipat-lipat sa mga tool para mag-edit ng code at mag-diagnose ng mga problema.
Sa GitLab mayroong isang buong hanay ng mga tool sa pag-develop: para sa kontrol ng bersyon, mga tiket, mga kahilingan sa pagsasama, isang pinakamahusay na in-class na pipeline ng CI/CD, isang container registry, at lahat ng katulad nito. Hindi pa ako nakakatagpo ng isang application na nag-aalok ng napakaraming paraan upang pamahalaan ang iyong development workflow.
Gustung-gusto ko ang automation, kaya natutunan ko kung paano ikonekta ang Pantheon sa GitLab upang ang mga commit sa pangunahing sangay sa GitLab ay ma-deploy sa pangunahing kapaligiran ng pag-unlad sa Pantheon. At ang mga kahilingan sa pagsasama-sama sa GitLab ay maaaring lumikha at mag-deploy ng code sa mga multidev na kapaligiran sa Pantheon.
Sa tutorial na ito, ituturo ko sa iyo kung paano mag-set up ng koneksyon sa pagitan ng GitLab at Pantheon at i-optimize ang iyong WordPress at Drupal workflow.
Syempre posible, salamin GitLab repository, ngunit gagawin namin ang lahat gamit ang aming mga kamay upang bungkalin GitLab CI at sa hinaharap gamitin ang tool na ito hindi lamang para sa pag-deploy.
Pagpapakilala
Para sa post na ito, kailangan mong maunawaan na hinahati ng Pantheon ang bawat site sa tatlong elemento: code, database, at mga file.
Kasama sa code ang mga CMS file gaya ng WordPress core, mga plugin, at mga tema. Ang mga file na ito ay pinamamahalaan sa Mga repositoryo ng Git, na hino-host ng Pantheon, ibig sabihin maaari kaming mag-deploy ng code mula sa GitLab hanggang sa Pantheon gamit ang Git.
Ang mga file sa Pantheon ay mga media file, iyon ay, mga larawan para sa site. Kadalasan ang mga ito ay ina-upload ng mga user at hindi sila pinapansin ng Git.
Ang aking proyekto sa Pantheon at GitLab ay tinatawag pantheon-gitlab-blog-demo. Ang pangalan ng proyekto ay dapat na natatangi. Dito kami gagana sa isang WordPress site. Maaari kang kumuha ng Drupal, ngunit kakailanganin mong baguhin ang ilang mga bagay.
Kung nangangati ang iyong mga kamay na baguhin ang isang bagay, halimbawa, alisin o magdagdag ng mga plugin, maging mapagpasensya. Hindi pa nakakonekta ang site sa GitLab, at gusto naming dumaan sa GitLab ang lahat ng pagbabago sa code.
Kapag na-install na namin ang WordPress, bumalik sa dashboard ng website ng Pantheon at baguhin ang development mode sa Git.
Paunang commit sa GitLab
Ngayon ay kailangan mong ilipat ang paunang WordPress code mula sa Pantheon site sa GitLab. Upang gawin ito, i-clone namin ang code mula sa Git repository ng Pantheon site nang lokal, at pagkatapos ay ipadala ito sa GitLab repository.
Ngayon magbago tayo git remote originupang tumuro sa GitLab sa halip na Pantheon. Pwedeng magawa ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ git remote.
Pumunta tayo sa proyekto ng GitLab at kopyahin ang URL ng repositoryo mula sa dropdown na Clone sa pahina ng mga detalye ng proyekto. Piliin natin ang Clone na may SSH na opsyon, dahil na-configure na natin ang SSH key.
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ git remote para sa isang lokal na kopya ng imbakan ng code - origin. Ito ay maaaring baguhin c git remote set-url origin [URL ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ GitLab], kung saan sa halip na mga bracket ay ipinasok namin ang aktwal na URL.
Sa wakas, inilunsad namin git push origin master --forceupang itulak ang WordPress code mula sa Pantheon patungo sa GitLab.
Ang βforce na opsyon ay isang beses lang kailangan. Pagkatapos ay sa mga koponan git push wala ito sa GitLab.
Pagse-set up ng mga kredensyal at variable
Tandaan kung paano kami nagdagdag ng SSH key nang lokal para mag-log in sa Pantheon at GitLab? Ang SSH token ay maaaring gamitin upang pahintulutan ang GitLab at Pantheon.
Kukumpletuhin na namin ngayon ang unang dalawang hakbang: Gumawa tayo ng bagong pares ng SSH key nang lokal gamit ang ssh-keygen at idagdag ang pribadong key bilang variable sa proyekto.
Tapos tatanungin natin SSH_PRIVATE_KEY bilang GitLab CI/CD environment variable sa mga setting ng proyekto.
Sa ikatlo at ikaapat na hakbang gagawa kami ng file .gitlab-ci.yml na may nilalaman tulad nito:
Huwag na nating i-commit ang file .gitlab-ci.yml, pagkatapos ay kakailanganin mong magdagdag ng iba pa dito.
Ngayon ginagawa namin ang ikalimang hakbang at idagdag ang pampublikong key na ginawa mo sa unang hakbang sa mga serbisyong kailangan mong ma-access sa build environment.
Sa aming kaso, gusto naming i-access ang Pantheon mula sa GitLab. Sinusunod namin ang mga tagubilin sa dokumento ng Pantheon sa pagdaragdag ng SSH key sa Pantheon at gawin ang hakbang na ito.
Tandaan: ang pribadong SSH ay nasa GitLab, ang bukas na SSH ay nasa Pantheon.
Mag-set up tayo ng ilan pang environment variable. Ang una ay tinatawag na PANTHEON_SITE. Ang halaga nito ay ang pangalan ng site ng Pantheon sa iyong makina.
Ang pangalan sa makina ay nakalista sa dulo ng Clone na may Git command. Na-clone mo na ang site nang lokal, kaya ito ang magiging pangalan ng direktoryo ng lokal na repositoryo.
Susunod, i-set up natin ang variable ng kapaligiran PANTHEON_GIT_URL. Ito ang Git repository URL para sa Pantheon site na nagamit na namin.
Ipasok lamang ang SSH repository URL, nang wala git clone at ang pangalan ng site sa makina sa dulo.
Phew. Tapos na, maaari na nating tapusin ang ating file .gitlab-ci.yml.
Gumawa ng deployment task
Ang una naming gagawin sa GitLab CI ay halos kapareho sa ginawa namin sa mga Git repository sa nakaraan. Ngunit sa pagkakataong ito, idagdag natin ang repositoryo ng Pantheon bilang pangalawang remote na mapagkukunan ng Git, at pagkatapos ay itulak ang code mula sa GitLab patungo sa Pantheon.
Upang gawin ito, i-configure natin yugtodeploy ΠΈ gawaindeploy:dev, dahil magde-deploy kami sa development environment sa Pantheon. Ang resultang file .gitlab-ci.yml magiging ganito ang hitsura:
Mga variable SSH_PRIVATE_KEY, PANTHEON_SITE ΠΈ PANTHEON_GIT_URL dapat mukhang pamilyar - na-set up namin ang mga variable ng kapaligiran na ito nang mas maaga. Gamit ang mga variable na ito ay magagamit namin ang mga halaga sa file .gitlab-ci.yml maraming beses, at kakailanganin lamang nilang i-update sa isang lugar.
Panghuli, idagdag, i-commit at ipadala ang file .gitlab-ci.yml sa GitLab.
Sinusuri ang deployment
Kung ginawa namin ang lahat ng tama, ang gawain deploy:dev ay matagumpay na tatakbo sa GitLab CI/CD at magsumite ng commit .gitlab-ci.yml sa Pantheon. Tingnan natin.
Nagpapadala ng merge request thread sa Pantheon
Dito natin gagamitin ang paborito kong feature na Pantheon β multidev, kung saan maaari kang lumikha ng mga karagdagang kapaligiran ng Pantheon para sa mga sangay ng Git kapag hinihiling.
Limitado ang access sa multidev, kaya maaaring laktawan ang seksyong ito. Ngunit kung mayroon kang access, maaari mong seryosong pataasin ang pagiging produktibo sa pamamagitan ng pag-set up ng awtomatikong paglikha ng mga multidev na kapaligiran sa Pantheon mula sa mga kahilingan sa pagsasama ng GitLab.
Una, gumawa tayo ng bagong sangay ng Git na lokal na ginagamit git checkout -b multidev-support. Ngayon, palitan natin muli ang isang bagay .gitlab-ci.yml.
Gusto kong isama ang merge request number sa pangalan ng kapaligiran ng Pantheon. Halimbawa, ang unang kahilingan sa pagsasama ay mr-1, pangalawa - mr-2 atbp.
Nagbabago ang kahilingan sa pagsasanib, kaya kailangan nating dynamic na tukuyin ang mga pangalan ng sangay ng Pantheon. Madali lang sa GitLab - kailangan mo lang gamitin paunang natukoy na mga variable ng kapaligiran.
Maaari naming kunin $CI_MERGE_REQUEST_IIDpara tukuyin ang merge request number. Ilapat natin ang lahat ng ito kasama ang mga global na variable ng kapaligiran na tinukoy natin kanina at magdagdag ng bagong deploy:multidev na gawain sa dulo ng file .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
Ito ay magiging katulad ng ating gawain deploy:dev, tanging ang sangay ang ipinadala sa Pantheon, hindi sa master.
Idinagdag at ginawa namin ang na-update na file .gitlab-ci.yml, at ngayon, itulak natin ang isang bagong sangay sa GitLab gamit ang git push -u origin multidev-support.
Ngayon, gumawa tayo ng bagong kahilingan sa pagsasama mula sa sangay multidev-supportsa pagpindot Lumikha ng kahilingan sa pagsasama.
Ang pagkakaroon ng paglikha ng isang merge na kahilingan, tinitingnan namin kung paano isinasagawa ang gawain ng CI/CD deploy:multidev.
Tingnan, isang bagong thread ang ipinadala sa Pantheon. Ngunit kung pupunta tayo sa seksyong multidev sa dashboard ng Pantheon site, hindi natin makikita ang bagong kapaligiran doon
Tingnan natin ang seksyong Mga Sangay ng Git.
Bilang resulta, ang aming thread mr-1 nakarating sa Pantheon. Gumawa tayo ng kapaligiran mula sa isang sangay mr-1.
Gumawa kami ng multidev environment, ngayon ay bumalik tayo sa GitLab at tingnan ang seksyon Mga Operasyon > Mga Kapaligiran. Makikita natin ang mga entry para sa dev ΠΈ mr-1.
Ito ay dahil nagdagdag kami ng isang entry environment Sa pangalan name ΠΈ url sa mga gawain sa CI/CD. Kung magki-click kami sa icon ng open environment, dadalhin kami sa URL ng multidev environment sa Pantheon.
I-automate ang paglikha ng multidev
Sa prinsipyo, maaari kang huminto dito at tandaan lamang na lumikha ng isang multidev na kapaligiran para sa bawat kahilingan sa pagsasama, ngunit ang prosesong ito ay maaaring awtomatiko.
Ang Pantheon ay may command line tool Hanggahan, kung saan maaari kang awtomatikong magtrabaho kasama ang platform. Binibigyang-daan ka ng Terminus na lumikha ng mga multidev na kapaligiran mula sa command line - perpekto para sa GitLab CI.
Kailangan namin ng bagong kahilingan sa pagsasama para subukan ito. Gumawa tayo ng bagong branch gamit ang git checkout -b auto-multidev-creation.
Upang magamit ang Terminus sa mga gawain ng GitLab CI/CD, kailangan mo ng machine token para sa pagpapatunay gamit ang Terminus at isang container na imahe na may Terminus.
Paggawa ng Pantheon Machine Token, i-save ito sa isang ligtas na lugar at idagdag ito bilang isang global environment variable sa GitLab na may pangalan PANTHEON_MACHINE_TOKEN.
Kung nakalimutan mo kung paano magdagdag ng mga variable ng kapaligiran ng GitLab, bumalik sa kung saan namin tinukoy PANTHEON_SITE.
Paglikha ng Dockerfile na may Terminus
Kung hindi ka gumagamit ng Docker o hindi mo gusto ang mga file Dockerfile, kunin ang aking imahe registry.gitlab.com/ataylorme/pantheon-gitlab-blog-demo:latest at laktawan ang seksyong ito.
May container registry ang GitLab, kung saan maaari naming buuin at ilagay ang Dockerfile para sa aming proyekto. Gumawa tayo ng Dockerfile na may Terminus upang gumana sa Pantheon.
Ang Terminus ay isang PHP command line tool, kaya magsimula tayo sa PHP image. Nag-i-install ako ng Terminus sa pamamagitan ng Composer, kaya gagamitin ko opisyal na larawan ng Docker Composer. Lumilikha kami Dockerfile sa lokal na direktoryo ng imbakan na may sumusunod na nilalaman:
# 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"
Sundin ang mga tagubilin para sa pag-assemble at pagpapadala ng mga larawan mula sa seksyon Bumuo at itulak ang mga imahe Π² dokumentasyon ng pagpapatala ng lalagyanupang mangolekta ng isang imahe mula sa Dockerfile at itulak ito sa GitLab.
Pagbukas ng seksyon pagpapatala sa proyekto ng GitLab. Kung ang lahat ay naaayon sa plano, ang aming imahe ay naroroon. Sumulat ng isang link sa tag ng imahe - kailangan namin ito para sa file .gitlab-ci.yml.
Seksyon script sa problema deploy:multidev ay nagsisimula nang lumaki, kaya't ilipat natin ito sa isang hiwalay na file. Gumawa ng bagong file 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
Ang script ay nasa isang pribadong direktoryo at hindi pinapayagan ang web access sa Pantheon. Mayroon kaming script para sa aming multidev logic. I-update natin ngayon ang seksyon deploy:multidev file .gitlab-ci.ymlupang ito ay maging ganito:
Kailangan nating tiyakin na ang ating mga gawain ay ginagampanan sa nilikhang custom na larawan, kaya magdagdag tayo ng kahulugan image mula sa registry URL hanggang .gitlab-ci.yml. Bilang resulta, napunta kami sa isang file na tulad nito .gitlab-ci.yml:
Magdagdag, mangako at magpadala private/multidev-deploy.sh ΠΈ .gitlab-ci.yml. Ngayon ay bumalik kami sa GitLab at maghintay para makumpleto ang gawain ng CI/CD. Maging matiyaga: maaaring tumagal ng ilang minuto ang multidev upang magawa.
Pagkatapos ay tingnan natin ang listahan ng multidev sa Pantheon. Oh himala! Multidev na kapaligiran mr-2 Nandito na.
Konklusyon
Mas naging masaya ang aking team nang magsimula kaming magbukas ng mga kahilingan sa pagsasama at awtomatikong lumikha ng mga kapaligiran.
Gamit ang makapangyarihang mga tool ng GitLab at Pantheon, maaari mong awtomatikong ikonekta ang GitLab sa Pantheon.
Dahil gumagamit kami ng GitLab CI/CD, magkakaroon ng puwang na lumago ang aming daloy ng trabaho. Narito ang ilang ideya para makapagsimula ka:
Magdagdag ng hakbang sa pagbuo.
Magdagdag ng awtomatikong pagsubok.
Magdagdag ng gawain upang matiyak na natutugunan ang mga pamantayan ng code.
Kami sa Pantheon ay gumawa ng magandang trabaho sa bersyon 2 ng aming plugin para sa mga tool sa pagbuo ng Terminus na may suporta sa GitLab. Kung ayaw mong mag-abala sa mga setting para sa bawat proyekto, subukan ang plugin na ito at tulungan kaming subukan ang v2 beta. Para sa pangkat ng Terminus build:project:create Kailangan mo lang ng isang Pantheon token at isang GitLab token. Ide-deploy niya ang isa sa mga sample na proyekto sa Composer at automated na pagsubok, gagawa ng bagong proyekto sa GitLab, isang bagong site ng Pantheon, at ikokonekta ang mga ito gamit ang mga variable ng kapaligiran at mga SSH key.
Tungkol sa May-akda
Gumagawa si Andrew Taylor ng mga tool para sa mga developer sa Panteon.