
Офарандаи абзорҳои таҳиягари меҳмони мо дар Pantheon дар бораи чӣ гуна автоматикунонии ҷойгиркунии WordPress бо истифода аз GitLab CI/CD сӯҳбат мекунад.
В Ман дар муносибатҳои таҳиягарон кор мекунам, аз ин рӯ ман ҳамеша роҳҳои нави кӯмак ба таҳиягарони WordPress ва Drupal дар ҳалли мушкилоти автоматизатсия дар ҷараёни кории худ меҷӯям. Барои ин ман дӯст медорам, ки бо асбобҳои нав таҷриба кунам ва онҳоро бо ҳамдигар пайваст кунам, то самаранок кор кунам.
Ман аксар вақт мебинам, ки таҳиягарон бо як сервери ягона мубориза мебаранд.
Мунтазири навбати худ барои истифодаи сервери фосилавӣ ё фиристодани URL-и муштариён бо қайди: "Инҷо нигоҳ кунед, аммо ҳоло ба ин ҷо нигоҳ накунед" хеле хуш аст.
- яке аз асбобҳои аҷиби Pantheon - ин мушкилотро ҳал мекунад, зеро бо онҳо шумо метавонед барои филиалҳои Git мувофиқи талабот муҳитҳо эҷод кунед. Ҳар як муҳити multidev дорои URL ва пойгоҳи додаҳои худро дорад, бинобар ин таҳиягарон метавонанд оромона кор кунанд, сифатро тафтиш кунанд ва бидуни қадам ба ангуштони якдигар тасдиқ кунанд.
Аммо Pantheon асбобҳо барои назорати версия ё ҳамгироӣ ва густариши муттасил (CI/CD) надорад. Аммо ин як платформаи чандир аст, ки бо он шумо метавонед ҳама гуна асбобҳоро муттаҳид кунед.
Ман инчунин мушоҳида кардам, ки гурӯҳҳо асбобҳои муайянро барои таҳия ва асбобҳои гуногунро барои ҷамъоварӣ ва ҷойгиркунӣ истифода мебаранд.
Масалан, онҳо барои идоракунии версия ва CI/CD асбобҳои гуногун доранд. Барои таҳрир кардани код ва ташхиси мушкилот шумо бояд скрипка кунед ва байни асбобҳо гузаред.
Дар бораи он маҷмӯи пурраи воситаҳои рушд вуҷуд дорад: барои назорати версия, чиптаҳо, дархостҳои якҷоя, лӯлаи беҳтарини CI/CD, феҳристи контейнер ва ҳама чизҳои ба ин монанд. Ман то ҳол бо барномае дучор наомадаам, ки барои идоракунии ҷараёни рушди шумо ин қадар зиёд пешниҳод мекунад.
Ман автоматизатсияро дӯст медорам, аз ин рӯ ман фаҳмидам, ки чӣ гуна пайваст кардани Pantheon ба GitLab, то ки ӯҳдадориҳо ба филиали асосии GitLab ба муҳити асосии рушд дар Pantheon ҷойгир карда шаванд. Ва якҷоя кардани дархостҳо дар GitLab метавонад кодро дар муҳити multidev дар Pantheon эҷод ва ҷойгир кунад.
Дар ин дастур, ман ба шумо мефаҳмонам, ки чӣ гуна пайвастшавӣ байни GitLab ва Pantheon барқарор карда, ҷараёни кории WordPress ва Drupal-и худро оптимизатсия кунед.
Албатта мумкин, , аммо мо ҳама чизро бо дастони худ мекунем, то онро фаҳмем ва дар оянда ин воситаро на танҳо барои ҷойгиркунӣ истифода баред.
Муқаддима
Барои ин паём, шумо бояд фаҳмед, ки Pantheon ҳар як сайтро ба се унсур тақсим мекунад: код, пойгоҳи додаҳо ва файлҳо.
Рамз дорои файлҳои CMS ба монанди асосии WordPress, плагинҳо ва мавзӯъҳо мебошад. Ин файлҳо дар , ки аз ҷониби Pantheon ҷойгир шудааст, маънои онро дорад, ки мо метавонем кодро аз GitLab ба Pantheon бо Git ҷойгир кунем.
Файлҳо дар Pantheon файлҳои медиавӣ, яъне тасвирҳо барои сайт мебошанд. Одатан, онҳо аз ҷониби корбарон бор карда мешаванд ва Git онҳоро нодида мегирад.
, маълумоти бештар дар бораи ё дар pantheon.io.
Тахминхо
Лоиҳаи ман дар Pantheon ва GitLab номида мешавад pantheon-gitlab-blog-demo. Номи лоиҳа бояд беназир бошад. Дар ин ҷо мо бо як сайти WordPress кор хоҳем кард. Шумо метавонед Drupal гиред, аммо шумо бояд баъзе чизҳоро тағир диҳед.
истифода хохам бурд ва шумо метавонед дар он кор кунед , Агар Шумо хоҳед.
Лоиҳа эҷод кунед
Аввалан, биёед эҷод кунем (мо ба ин баъдтар бармегардем).
Акнун . Сипас мо WordPress-ро барои панели сайт насб мекунем.
Агар дастҳои шумо барои тағир додани чизе хориш кунанд, масалан, плагинҳоро хориҷ кунед ё илова кунед, сабр кунед. Сайт ҳанӯз ба GitLab пайваст нашудааст ва мо мехоҳем, ки ҳама тағиротҳои код тавассути GitLab гузаранд.
Пас аз насб кардани WordPress, ба панели панели вебсайти Pantheon баргардед ва ҳолати таҳияро ба Git иваз кунед.
Ухдадории ибтидоӣ дар GitLab
Ҳоло шумо бояд рамзи ибтидоии WordPress-ро аз сайти Pantheon ба GitLab интиқол диҳед. Барои ин, мо кодро аз анбори Git сайти Pantheon ба таври маҳаллӣ клон мекунем ва сипас онро ба анбори GitLab мефиристем.
Барои осонтар ва бехатартар кардани он, ва мо набояд ҳар дафъае, ки анбори Pantheon Git-ро клон кунем, парол ворид кунем. Дар айни замон аллакай .
Барои ин кор, вебсайти Pantheon-ро ба таври маҳаллӣ бо нусхабардории фармон аз майдони Clone бо Git дар панели идоракунӣ клон кунед.
Агар ба шумо кӯмак лозим бошад, ҳуҷҷатҳоро хонед .
Акнун биёед тағир диҳем git remote originба ҷои Pantheon ба GitLab ишора кунед. Инро кардан мумкин аст .
Биёед ба лоиҳаи GitLab равем ва URL-и анборро аз афтанда Clone дар саҳифаи тафсилоти лоиҳа нусхабардорӣ кунем. Биёед опсияи Clone бо SSH-ро интихоб кунем, зеро мо аллакай калиди SSH-ро танзим кардаем.
бо пешфарз git remote барои нусхаи маҳаллии анбори код - origin. Инро тағир додан мумкин аст в git remote set-url origin [URL репозитория GitLab], ки дар он ҷо ба ҷои қавс мо URL-и воқеиро ворид мекунем.
Ниҳоят, мо оғоз мекунем git push origin master --forceбарои тела додани рамзи WordPress аз Pantheon ба GitLab.
Опсияи -force танҳо як маротиба лозим аст. Баъд дар дастаҳо
git pushон дар GitLab нахоҳад буд.
Танзими эътимодномаҳо ва тағирёбандаҳо
Дар хотир доред, ки чӣ гуна мо барои ворид шудан ба Pantheon ва GitLab калиди SSH-ро ба таври маҳаллӣ илова кардем? Токени SSH метавонад барои иҷозати GitLab ва Pantheon истифода шавад.
GitLab дорои ҳуҷҷатҳои аъло. Биёед мебинем .
Ҳоло мо ду қадами аввалро анҷом медиҳем: Биёед як ҷуфт калиди нави SSH-ро ба таври маҳаллӣ бо ssh-keygen эҷод кунем ва калиди хусусиро ҳамчун тағирёбанда ба лоиҳа илова кунем.
Баъд мепурсем SSH_PRIVATE_KEY чи тавр дар танзимоти лоиҳа.
Дар қадамҳои сеюм ва чорум мо файл эҷод мекунем .gitlab-ci.yml бо чунин мундариҷа:
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"Биёед ҳоло файлро иҷро накунем .gitlab-ci.yml, пас ба шумо лозим меояд, ки ба он чизи дигаре илова кунед.
Холо мо кадами панчумро ичро мекунем ва калиди ҷамъиятиро, ки шумо дар қадами аввал сохтаед, ба хидматҳое, ки ба шумо дар муҳити сохтмон дастрасӣ доранд, илова кунед.
Дар ҳолати мо мо мехоҳем ба Pantheon аз GitLab дастрасӣ пайдо кунем. Мо дастурҳоро дар ҳуҷҷати Pantheon иҷро мекунем ва ин қадамро иҷро кунед.
Дар хотир доред: SSH хусусӣ дар GitLab, SSH кушода дар Pantheon аст.
Биёед якчанд тағирёбандаи муҳити атрофро танзим кунем. Якум PANTHEON_SITE номида мешавад. Арзиши он номи сайти Pantheon дар мошини шумост.
Номи мошин дар охири фармони Clone бо Git оварда шудааст. Шумо аллакай сайтро ба таври маҳаллӣ клон кардаед, бинобар ин ин номи феҳристи анбори маҳаллӣ хоҳад буд.
Сипас, биёед тағирёбандаи муҳити атрофро танзим кунем PANTHEON_GIT_URL. Ин URL-и анбори Git барои сайти Pantheon аст, ки мо аллакай истифода кардаем.
Танҳо URL-и анбори SSH-ро ворид кунед, бе
git cloneва номи сайт дар мошини дар охири.
Фу. Ин кор анҷом ёфт, ҳоло мо метавонем файли худро анҷом диҳем .gitlab-ci.yml.
Вазифаи ҷойгиркунӣ эҷод кунед
Он чизе, ки мо дар аввал бо GitLab CI мекунем, ба он чизе, ки мо бо анбори Git дар гузашта анҷом дода будем, хеле монанд аст. Аммо ин дафъа, биёед анбори Pantheon-ро ҳамчун манбаи дуввуми дурдасти Git илова кунем ва сипас кодро аз GitLab ба Pantheon тела диҳем.
Барои ин, биёед конфигуратсия кунем deploy и deploy:dev, зеро мо ба муҳити рушд дар Pantheon ҷойгир хоҳем кард. Файли натиҷа .gitlab-ci.yml чунин мешуморанд:
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Тағйирёбандаҳо SSH_PRIVATE_KEY, PANTHEON_SITE и PANTHEON_GIT_URL бояд шинос бошад - мо ин тағирёбандаҳои муҳити зистро қаблан насб кардем. Бо ин тағирёбандаҳо мо метавонем арзишҳоро дар файл истифода барем .gitlab-ci.yml чанд маротиба ва онҳо бояд танҳо дар як ҷо навсозӣ шаванд.
Дар ниҳоят, файлро илова кунед, иҷро кунед ва фиристед .gitlab-ci.yml дар GitLab.
Санҷиши ҷойгиркунӣ
Агар мо ҳама чизро дуруст иҷро кунем, вазифа deploy:dev дар GitLab CI/CD бомуваффақият кор мекунад ва ӯҳдадор мешавад .gitlab-ci.yml дар Пантеон. Биёед бубинем.
Фиристодани риштаҳои дархости якҷоякунӣ ба Pantheon
Дар ин ҷо мо хусусияти дӯстдоштаи ман Pantheon -ро истифода хоҳем бурд , ки дар он шумо метавонед муҳити иловагии Pantheon барои филиалҳои Git мувофиқи дархост эҷод кунед.
, бинобар ин, ин бахшро партофтан мумкин аст. Аммо агар шумо дастрасӣ дошта бошед, шумо метавонед тавассути эҷоди худкори муҳитҳои multidev дар Pantheon аз дархостҳои GitLab якҷоя кардани GitLab маҳсулнокӣ ба таври ҷиддӣ афзоиш диҳед.
Аввалан, биёед филиали нави Git-ро ба таври маҳаллӣ созем git checkout -b multidev-support. Акнун биёед боз чизеро тағир диҳем .gitlab-ci.yml.
Ман мехоҳам рақами дархости якҷояро ба номи муҳити Pantheon дохил кунам. Масалан, дархости аввалини якҷоякунӣ ин аст mr-1, дуюм - mr-2 ва гайра.
Дархости якҷояшавӣ тағир меёбад, бинобар ин мо бояд номҳои филиалҳои Pantheon-ро динамикӣ муайян кунем. Ин дар GitLab осон аст - шумо танҳо бояд истифода баред .
Мо метавонем $CI_MERGE_REQUEST_IIDрақами дархости якҷояро муайян кунед. Биёед ҳамаи инро дар баробари тағирёбандаҳои глобалии муҳити зист, ки мо қаблан муайян карда будем, татбиқ кунем ва дар охири файл вазифаи нави deploy:multidev илова кунем. .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Он ба вазифаи мо монанд хоҳад буд deploy:dev, танҳо филиал ба Пантеон фиристода мешавад, на ба master.
Мо файли навшударо илова ва содир кардем .gitlab-ci.yml, ва ҳоло биёед филиали навро ба GitLab бо он тела диҳем git push -u origin multidev-support.
Акнун биёед дархости нави якҷояро аз филиал эҷод кунем multidev-supportба воситаи ангуштзанӣ Эҷоди дархости якҷоякунӣ.
Пас аз эҷоди дархости якҷоякунӣ, мо мебинем, ки чӣ гуна вазифаи CI/CD иҷро мешавад deploy:multidev.
Инак, риштаи нав ба Пантеон фиристода шудааст. Аммо агар мо ба бахши multidev дар панели сайти Pantheon равем, мо муҳити навро дар он ҷо намебинем
Биёед ба қисмати филиалҳои Git назар андозем.
Дар натича риштаи мо mr-1 ба Пантеон расид. Биёед, аз як шоха муҳите эҷод кунем mr-1.
Мо муҳити multidev эҷод кардем, ҳоло биёед ба GitLab баргардем ва ба қисмат назар кунем Амалиёт > Муҳити зист. Мо сабтҳоро барои дидан хоҳем кард dev и mr-1.
Ин сабаби он аст, ки мо як вуруд илова кардем environment Бо ном name и url ба вазифаҳои CI/CD. Агар мо тасвири муҳити кушодро пахш кунем, мо ба URL-и муҳити multidev дар Pantheon бурда мешавем.
Эҷоди multidev автоматӣ кунед
Аслан, шумо метавонед дар ин ҷо таваққуф кунед ва танҳо фаромӯш накунед, ки барои ҳар як дархости якҷоякунӣ муҳити multidev эҷод кунед, аммо ин равандро автоматӣ кардан мумкин аст.
Pantheon дорои асбоби сатри фармон мебошад , ки дар он шумо метавонед бо платформа ба таври худкор кор кунед. Терминус ба шумо имкон медиҳад, ки аз сатри фармон муҳитҳои multidev эҷод кунед - беҳтарин барои .
Барои санҷидани ин ба мо дархости нави якҷоякунӣ лозим аст. Биёед бо истифода аз филиали нав эҷод кунем git checkout -b auto-multidev-creation.
Барои истифодаи Terminus дар вазифаҳои GitLab CI/CD, ба шумо аломати мошин барои аутентификатсия бо Terminus ва тасвири контейнерӣ бо Terminus лозим аст.
, онро дар ҷои бехатар захира кунед ва онро ҳамчун тағирёбандаи муҳити глобалӣ дар GitLab бо ном илова кунед PANTHEON_MACHINE_TOKEN.
Агар шумо чӣ гуна илова кардани тағирёбандаҳои муҳити GitLab-ро фаромӯш карда бошед, ба он ҷое, ки мо муайян кардем, баргардед
PANTHEON_SITE.
Эҷоди файли докер бо Терминус
Агар шумо Docker-ро истифода набаред ё файлҳоро дӯст надоред Dockerfile, тасвири маро гиред registry.gitlab.com/ataylorme/pantheon-gitlab-blog-demo:latest ва ин бахшро гузаред.
, ки мо метавонем Dockerfile-ро барои лоиҳаи худ созем ва ҷойгир кунем. Биёед бо Terminus Dockerfile эҷод кунем, то бо Pantheon кор кунем.
Терминус як абзори сатри фармони PHP аст, аз ин рӯ биёед бо тасвири PHP оғоз кунем. Ман Terminus-ро тавассути Composer насб мекунам, аз ин рӯ истифода хоҳам кард . Мо эҷод мекунем Dockerfile дар феҳристи анбори маҳаллӣ бо мундариҷаи зерин:
# 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"Дастурҳоро оид ба ҷамъоварӣ ва фиристодани тасвирҳо аз қисмат иҷро кунед Тасвирҳо созед ва пахш кунед в барои ҷамъоварии тасвир аз Dockerfile ва онро ба GitLab тела диҳед.
Кушодани бахш Нишондиҳанда дар лоиҳаи GitLab. Агар ҳама чиз мувофиқи нақша сурат гирад, симои мо дар он ҷо хоҳад буд. Истиноди теги тасвирро нависед - ба мо он барои файл лозим аст .gitlab-ci.yml.
Фасли script дар проблема deploy:multidev нашъунамо ёфта истодааст, пас биёед онро ба файли алохида гузаронем. Файли нав эҷод кунед 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Скрипт дар феҳристи хусусӣ ва . Мо барои мантиқи мултипликатори худ скрипт дорем. Биёед ҳоло бахшро навсозӣ кунем deploy:multidev файл .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:
# Run the multidev deploy script
- "/bin/bash ./private/multidev-deploy.sh"
only:
- merge_requestsМо бояд боварӣ ҳосил кунем, ки вазифаҳои мо дар тасвири фармоишии сохташуда иҷро мешаванд, бинобар ин биёед таърифро илова кунем image аз URL-и реестр ба .gitlab-ci.yml. Дар натиҷа, мо бо чунин файл ба анҷом расидем .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Илова кунед, иҷро кунед ва ирсол кунед private/multidev-deploy.sh и .gitlab-ci.yml. Акнун мо ба GitLab бармегардем ва интизор шавед, ки вазифаи CI/CD анҷом ёбад. Сабр кунед: барои эҷоди multidev метавонад чанд дақиқа вақт гирад.
Пас аз он мо ба рӯйхати мултипликатори Пантеон назар мекунем. Эй мӯъҷиза! Муҳити multidev mr-2 аллакай дар ин ҷо.
хулоса
Вақте ки мо кушодани дархостҳои якҷоякунӣ ва эҷоди муҳитҳоро ба таври худкор оғоз кардем, дастаи ман хеле шавқовартар буд.
Бо асбобҳои пурқуввати GitLab ва Pantheon, шумо метавонед GitLab-ро ба Pantheon ба таври худкор пайваст кунед.
Азбаски мо GitLab CI/CD-ро истифода мебарем, ҷараёни кори мо барои афзоиш ҷой хоҳад дошт. Инҳоянд чанд идея барои оғоз кардани шумо:
- Қадами сохтмонро илова кунед.
- Илова кардани санҷиши автоматӣ.
- Барои таъмини риояи стандартҳои код супориш илова кунед.
- Илова кунед .
Ба мо бигӯед, ки шумо дар бораи GitLab, Pantheon ва автоматизатсия чӣ фикр доред.
PS Оё шумо медонед, ки Terminus, асбоби сатри фармони Pantheon, ?
Мо дар Pantheon дар версияи 2-и худ кори хуб кардем бо дастгирии GitLab. Агар шумо нахоҳед, ки бо танзимоти ҳар як лоиҳа ташвиш кашед, ин плагинро санҷед ва ба мо дар озмоиши бета v2 кӯмак кунед. Барои дастаи Терминус build:project:create Ба шумо танҳо аломати Pantheon ва аломати GitLab лозим аст. Вай яке аз лоиҳаҳои намунавиро бо Composer ва санҷиши автоматикунонидашуда татбиқ мекунад, дар GitLab, як сайти нави Pantheon лоиҳаи нав эҷод мекунад ва онҳоро бо истифода аз тағирёбандаҳои муҳити зист ва калидҳои SSH пайваст мекунад.
Дар бораи муаллиф
Эндрю Тейлор асбобҳоро барои таҳиягарон дар .
Манбаъ: will.com
