ProHoster > ΠΠ»ΠΎΠ³ > Kev tswj hwm > Yuav Ua Li Cas Txuas GitLab thiab Pantheon thiab Optimize Drupal thiab WordPress Workflows
Yuav Ua Li Cas Txuas GitLab thiab Pantheon thiab Optimize Drupal thiab WordPress Workflows
Peb cov qhua tsim cov cuab yeej tsim tawm ntawm Pantheon tham txog yuav ua li cas kom siv WordPress xa mus siv GitLab CI / CD.
Π Pantheon Kuv ua haujlwm hauv kev tsim kho kev sib raug zoo, yog li kuv ib txwm nrhiav txoj hauv kev tshiab los pab WordPress thiab Drupal cov neeg tsim khoom daws teeb meem automation hauv lawv cov haujlwm ua haujlwm. Ua li no, kuv nyiam sim nrog cov cuab yeej tshiab thiab sib xyaw ua ke kom ua haujlwm tau zoo.
Yog tias koj txhais tes khaus hloov qee yam, piv txwv li, tshem tawm lossis ntxiv plugins, ua siab ntev. Lub vev xaib tseem tsis tau txuas nrog GitLab, thiab peb xav kom txhua tus lej hloov pauv mus dhau GitLab.
Thaum peb nruab WordPress, rov qab mus rau Pantheon lub vev xaib dashboard thiab hloov txoj kev txhim kho rau Git.
Kev cog lus pib ntawm GitLab
Tam sim no koj yuav tsum hloov qhov pib WordPress code los ntawm Pantheon site mus rau GitLab. Txhawm rau ua qhov no, peb clone cov cai los ntawm Git repository ntawm Pantheon qhov chaw hauv zos, thiab xa mus rau GitLab repository.
Tam sim no peb yuav ua tiav thawj ob kauj ruam: Cia peb tsim SSH tus yuam sij tshiab hauv zos nrog ssh-keygen thiab ntxiv tus yuam sij ntiag tug raws li qhov sib txawv ntawm qhov project.
Ces peb mam li nug SSH_PRIVATE_KEY yuav ua li cas GitLab CI/CD ib puag ncig hloov pauv hauv qhov project settings.
Hauv cov kauj ruam thib peb thiab plaub peb yuav tsim cov ntaub ntawv .gitlab-ci.yml nrog cov ntsiab lus zoo li no:
Cia peb teeb tsa ob peb qhov chaw ib puag ncig ntxiv. Thawj qhov hu ua PANTHEON_SITE. Nws tus nqi yog lub npe ntawm Pantheon qhov chaw ntawm koj lub tshuab.
Lub npe ntawm lub tshuab tau teev nyob rau qhov kawg ntawm Clone nrog Git hais kom ua. Koj twb tau cloned lub xaib hauv zos, yog li qhov no yuav yog lub npe ntawm cov chaw khaws cia hauv zos.
Tom ntej no, cia peb teeb tsa ib puag ncig hloov pauv PANTHEON_GIT_URL. Nov yog Git repository URL rau Pantheon qhov chaw uas peb twb tau siv lawm.
Sau tsuas yog SSH repository URL, tsis muaj git clone thiab lub npe ntawm qhov chaw ntawm lub tshuab thaum kawg.
Phew. Uas ua tiav, tam sim no peb tuaj yeem ua tiav peb cov ntaub ntawv .gitlab-ci.yml.
Tsim ib txoj haujlwm xa tawm
Qhov peb yuav pib ua nrog GitLab CI zoo ib yam li qhov peb tau ua nrog Git repositories yav dhau los. Tab sis lub sijhawm no, cia peb ntxiv Pantheon repository ua qhov chaw nyob deb Git thib ob, thiab tom qab ntawd thawb tus lej los ntawm GitLab mus rau Pantheon.
Ua li no, cia peb teeb tsa theemdeploy ΠΈ txoj hauj lwmdeploy:dev, vim tias peb yuav xa mus rau qhov chaw tsim kho ntawm Pantheon. Cov ntaub ntawv tshwm sim .gitlab-ci.yml yuav zoo li no:
Yog tias peb ua txhua yam kom raug, txoj haujlwm deploy:dev yuav ua tiav hauv GitLab CI / CD thiab xa daim ntawv cog lus .gitlab-ci.yml ntawm Pantheon. Cia peb saib.
Kev nkag mus rau multidev yog txwv, yog li cov tshooj no tuaj yeem hla. Tab sis yog tias koj muaj kev nkag tau, koj tuaj yeem ua kom muaj txiaj ntsig zoo los ntawm kev teeb tsa tsis siv neeg tsim ntawm multidev ib puag ncig ntawm Pantheon los ntawm GitLab merge thov.
Ua ntej cia peb ua ib ceg Git tshiab hauv zos siv git checkout -b multidev-support. Tam sim no cia peb hloov ib yam dab tsi ntxiv rau hauv .gitlab-ci.yml.
Kuv nyiam suav nrog tus lej thov sib koom ua ke hauv Pantheon ib puag ncig lub npe. Piv txwv li, thawj qhov kev thov sib koom ua ke yog mr-1, ob- mr-2 lwm.
Qhov kev thov sib koom ua ke hloov pauv, yog li peb yuav tsum tau txiav txim siab txog Pantheon ceg npe. Nws yooj yim ntawm GitLab - koj tsuas yog xav tau siv predefined ib puag ncig variables.
Peb tuaj yeem nqa $CI_MERGE_REQUEST_IIDtxhawm rau qhia tus lej thov kev sib koom ua ke. Cia peb siv tag nrho cov no nrog rau lub ntiaj teb kev hloov pauv ib puag ncig peb tau teev ua ntej thiab ntxiv ib qho tshiab deploy: multidev ua haujlwm tom kawg ntawm cov ntaub ntawv .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
Hauv txoj ntsiab cai, koj tuaj yeem nres ntawm no thiab tsuas yog nco ntsoov tsim ib puag ncig multidev rau txhua qhov kev thov sib koom ua ke, tab sis cov txheej txheem no tuaj yeem ua haujlwm.
Pantheon muaj cov cuab yeej hais kom ua kab Terminus, qhov twg koj tuaj yeem ua haujlwm nrog lub platform txiav. Terminus tso cai rau koj los tsim multidev ib puag ncig los ntawm kab hais kom ua - zoo tagnrho rau GitLab CI.
Peb xav tau kev thov sib koom ua ke tshiab los sim qhov no. Cia peb tsim ib ceg tshiab siv git checkout -b auto-multidev-creation.
Txhawm rau siv Terminus hauv GitLab CI / CD cov haujlwm, koj xav tau lub tshuab token rau kev lees paub nrog Terminus thiab lub thawv duab nrog Terminus.
GitLab muaj lub thawv ntim npe, qhov twg peb tuaj yeem tsim thiab tso Dockerfile rau peb qhov project. Cia peb tsim Dockerfile nrog Terminus ua haujlwm nrog Pantheon.
Terminus yog PHP hais kom ua kab, yog li cia peb pib nrog PHP duab. Kuv tabtom txhim kho Terminus los ntawm Composer, yog li kuv yuav siv official Docker Composer duab. Peb tsim Dockerfile nyob rau hauv lub zos repository directory nrog cov ntsiab lus hauv qab no:
# 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"
Ua raws li cov lus qhia rau kev sib dhos thiab xa cov duab los ntawm ntu Tsim thiab thawb cov duab Π² ntim cov ntaub ntawv sau npemus sau ib daim duab los ntawm Dockerfile thiab thawb nws mus rau GitLab.
Qhib ntu Kev Sau Npe hauv GitLab qhov project. Yog tias txhua yam mus raws li kev npaj, peb cov duab yuav nyob ntawd. Sau ib qhov txuas rau daim duab lossis - peb xav tau nws rau cov ntaub ntawv .gitlab-ci.yml.
Feem script hauv qhov teeb meem deploy:multidev tab tom pib loj hlob, yog li cia peb txav nws mus rau ib qho ntaub ntawv cais. Tsim cov ntaub ntawv tshiab 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
Tsab ntawv yog nyob rau hauv ib tug private directory thiab tsis tso cai rau lub vev xaib nkag mus rau Pantheon. Peb muaj ib tsab ntawv rau peb multidev logic. Wb tam sim no hloov kho seem deploy:multidev ntaub ntawv .gitlab-ci.ymlyog li ntawd nws hloov tawm zoo li no:
Peb yuav tsum xyuas kom meej tias peb cov dej num tau ua tiav hauv cov duab tsim, yog li cia peb ntxiv cov ntsiab lus image los ntawm npe URL rau .gitlab-ci.yml. Yog li ntawd, peb tau xaus nrog cov ntaub ntawv zoo li no .gitlab-ci.yml:
Ntxiv, cog lus thiab xa private/multidev-deploy.sh ΠΈ .gitlab-ci.yml. Tam sim no peb rov qab mus rau GitLab thiab tos rau txoj haujlwm CI / CD kom tiav. Ua siab ntev: multidev tuaj yeem siv sijhawm ob peb feeb los tsim.
Tom qab ntawd peb mus saib cov npe multidev ntawm Pantheon. Oh txuj ci tseem ceeb! Multidev ib puag ncig mr-2 xa no.
xaus
Kuv pab neeg muaj kev lom zem ntau dua thaum peb pib qhib kev thov sib koom ua ke thiab tsim ib puag ncig tau txais.
Nrog cov cuab yeej muaj zog ntawm GitLab thiab Pantheon, koj tuaj yeem txuas GitLab rau Pantheon tau txais.
Txij li thaum peb siv GitLab CI / CD, peb txoj haujlwm yuav muaj chaw loj hlob. Nov yog ob peb lub tswv yim kom koj pib:
Ntxiv ib kauj ruam tsim.
Ntxiv automated test.
Ntxiv ib txoj hauj lwm los xyuas kom meej cov qauv cai tau ua tiav.