ProHoster > Blog > İdarə > GitLab və Pantheon-u necə bağlamaq və Drupal və WordPress iş axınlarını optimallaşdırmaq olar
GitLab və Pantheon-u necə bağlamaq və Drupal və WordPress iş axınlarını optimallaşdırmaq olar
Qonağımız, Pantheon-dan tərtibatçı alətlər yaradıcısı, GitLab CI/CD ilə WordPress yerləşdirmələrini necə avtomatlaşdırmağı izah edir.
В Panteon Mən tərtibatçılarla əlaqələrdəyəm, ona görə də həmişə WordPress və Drupal tərtibatçılarına iş axınının avtomatlaşdırılması məsələlərini həll etmək üçün yeni yollar axtarıram. Bunun üçün mən yeni alətlərlə təcrübə etməyi və effektiv işləmək üçün onları bir-biri ilə birləşdirməyi xoşlayıram.
Mən tez-tez inkişaf etdiricilərin tək bir quruluş serveri ilə mübarizə apardığını görürəm.
Çox əyləncəli - ara serverdən istifadə etmək üçün növbənizi gözləmək və ya müştərilərə "Bura baxın, amma hələ bura baxmayın" işarəsi ilə URL göndərmək.
multidev mühitləri - sərin Pantheon alətlərindən biri - bu problemi həll edin, çünki onların köməyi ilə Git filialları üçün tələb olunan mühitlər yarada bilərsiniz. Hər bir multidev mühitinin öz URL və verilənlər bazası var, beləliklə tərtibatçılar bir-birinin ayağına basmadan işləyə, keyfiyyəti yoxlaya və təsdiq ala bilsinlər.
Lakin Pantheon-da versiyaya nəzarət və ya davamlı inteqrasiya və yerləşdirmə (CI/CD) üçün alətlər yoxdur. Ancaq bu, hər hansı bir aləti birləşdirə biləcəyiniz çevik bir platformadır.
Mən də müşahidə etdim ki, komandalar bəzi vasitələrdən inkişaf üçün, digərləri isə qurmaq və yerləşdirmək üçün istifadə edirlər.
Məsələn, onların versiyaya nəzarət və CI/CD üçün müxtəlif alətləri var. Kodu redaktə etmək və problemləri diaqnoz etmək üçün skripka etməli və alətlər arasında keçid etməlisiniz.
Haqqında GitLab inkişaf alətlərinin tam dəsti var: versiyaya nəzarət, biletlər, birləşmə sorğuları, ən yaxşı CI / CD boru kəməri, konteyner reyestri və bu kimi şeylər. Mən hələ inkişaf iş axını idarə etmək üçün çox şey olan bir tətbiqə rast gəlməmişəm.
Mən avtomatlaşdırmanı sevirəm, ona görə də Pantheon-u GitLab-a necə qoşmağı öyrəndim ki, GitLab-dakı master filialına öhdəliklər Pantheon-da master inkişaf mühitinə yerləşdirilsin. GitLab birləşmə sorğuları həmçinin Pantheon-da multidev mühitlərində kod yarada və yerləşdirə bilər.
Bu təlimatda mən sizə GitLab və Pantheon arasında əlaqə qurmağı və WordPress və Drupal iş axınınızı optimallaşdırmağı göstərəcəyəm.
Əlbəttə, mümkündür, GitLab repozitoriyasını əks etdirin, ancaq dərinləşmək üçün qələmlərlə hər şeyi edəcəyik GitLab CI və gələcəkdə bu aləti yalnız yerləşdirmə üçün istifadə edin.
Giriş
Bu yazı üçün Pantheon-un hər saytı üç elementə böldüyünü başa düşməlisiniz: kod, verilənlər bazası və fayllar.
Koda əsas, plaginlər və WordPress mövzuları kimi CMS faylları daxildir. Bu fayllar tərəfindən idarə olunur Git depolarıPantheon tərəfindən ev sahibliyi edilir, yəni Git ilə GitLab-dan Pantheona kodu yerləşdirə bilərik.
Panteondakı fayllar media faylları, yəni sayt üçün şəkillər adlanır. Onlar adətən istifadəçilər tərəfindən yüklənir və Git onlara məhəl qoymur.
Mənim Pantheon və GitLab layihəm adlanır pantheon-gitlab-blog-demo. Layihənin adı unikal olmalıdır. Burada WordPress saytı ilə işləyəcəyik. Drupal qəbul edə bilərsiniz, ancaq bir şeyi dəyişdirməlisiniz.
Əlləriniz bir şeyi dəyişdirmək üçün qaşınırsa, məsələn, plaginləri çıxarın və əlavə edin, səbirli olun. Sayt hələ GitLab-a qoşulmayıb və biz bütün kod dəyişikliklərinin GitLab vasitəsilə keçməsini istəyirik.
WordPress quraşdırıldıqdan sonra Pantheon idarə panelinə qayıdın və inkişaf rejimini Git-ə dəyişin.
GitLab-da ilkin öhdəlik
İndi ilkin WordPress kodunu Pantheon saytından GitLab-a köçürməlisiniz. Bunun üçün biz Pantheon saytının Git repozitoriyasından kodu lokal olaraq klonlayırıq və sonra onu GitLab repozitoriyasına göndəririk.
İndi dəyişək git remote originPantheon əvəzinə GitLab-a işarə etmək. Bunu etmək olar командой git remote.
Gəlin GitLab layihəsinə keçək və layihənin təfərrüatları səhifəsindəki Clone açılır menyusundan repozitorun URL-ni kopyalayaq. Gəlin SSH ilə Clone variantını seçək, çünki biz artıq SSH açarını konfiqurasiya etmişik.
Qiyabi git remote kod deposunun yerli surəti üçün - origin. Bu dəyişdirilə bilər git remote set-url origin [URL репозитория GitLab], burada mötərizələr yerinə faktiki URL-i daxil edirik.
Nəhayət, işə salırıq git push origin master --forceWordPress kodunu Pantheon saytından GitLab-a itələmək.
--force seçimi yalnız bir dəfə lazımdır. Sonra komandalarda git push GitLab-da bu olmayacaq.
Etibarnamələri və dəyişənləri qurun
Pantheon və GitLab-a daxil olmaq üçün yerli olaraq SSH açarını necə əlavə etdiyimizi xatırlayın? SSH tokeni GitLab və Pantheon-a icazə vermək üçün istifadə edilə bilər.
İndi ilk iki addımı tamamlayacağıq: ssh-keygen ilə yerli olaraq yeni SSH açar cütü yaradın və özəl açarı layihəyə dəyişən kimi əlavə edin.
Sonra təyin edəcəyik SSH_PRIVATE_KEY kimi GitLab CI/CD mühit dəyişəni layihə parametrlərində.
Üçüncü və dördüncü addımlarda bir fayl yaradacağıq .gitlab-ci.yml bu kimi məzmunla:
Faylı təhvil verənə qədər .gitlab-ci.yml, onda siz ona başqa bir şey əlavə etməlisiniz.
İndi beşinci addımı edin və ilk addımda yaratdığınız açıq açarı qurma mühitində daxil olmanız lazım olan xidmətlərə əlavə edin.
Bizim vəziyyətimizdə GitLab-dan Pantheon-a daxil olmaq istəyirik. Pantheon sənədindəki təlimatlara əməl edin Pantheona SSH açarının əlavə edilməsi və bu addımı edin.
Unutmayın: qapalı SSH GitLab-da, açıq Pantheon-da.
Gəlin daha bir neçə mühit dəyişənini təyin edək. Birincisi PANTHEON_SITE adlanır. Onun dəyəri maşınınızdakı Pantheon saytının adıdır.
Maşındakı ad Git ilə Clone əmrinin sonunda verilmişdir. Siz artıq saytı yerli olaraq klonladınız, ona görə də bu, yerli deponun kataloq adı olacaq.
Sonra, mühit dəyişənini təyin edin PANTHEON_GIT_URL. Bu, artıq istifadə etdiyimiz Pantheon saytı üçün Git deposunun URL-dir.
Biz yalnız SSH deposunun URL-ni daxil edirik, olmadan git clone və sonunda maşındakı saytın adı.
vay. Hazırdır, indi faylımızı bitirə bilərik .gitlab-ci.yml.
Yerləşdirmə tapşırığı yaradın
Əvvəlcə GitLab CI ilə edəcəyimiz şey keçmişdə Git repozitoriyaları ilə etdiklərimizə çox bənzəyir. Ancaq bu dəfə Pantheon repozitoriyasını ikinci Git uzaq mənbəsi kimi əlavə edək və sonra kodu GitLab-dan Pantheon-a itələyək.
Bunu etmək üçün təyin edin mərhələdeploy и vəzifədeploy:dev, çünki biz Pantheon-da inkişaf mühitinə yerləşdirəcəyik. Nəticədə fayl .gitlab-ci.yml bu kimi görünür:
Dəyişənlər SSH_PRIVATE_KEY, PANTHEON_SITE и PANTHEON_GIT_URL tanış görünməlidir - biz bu mühit dəyişənlərini əvvəllər qurmuşuq. Bu dəyişənlərlə biz fayldakı dəyərlərdən istifadə edə biləcəyik .gitlab-ci.yml dəfələrlə və yalnız bir yerdə yeniləməlisiniz.
Nəhayət, faylı əlavə edin, yerinə yetirin və itələyin .gitlab-ci.yml Gitlab-da.
Yerləşdirmənin yoxlanılması
Hər şeyi düzgün etdiksə, vəzifə deploy:dev GitLab CI/CD-də uğurla işləyəcək və öhdəlik götürəcək .gitlab-ci.yml Panteonda. Gəlin nəzər salaq.
Birləşmə sorğusu filialları Pantheona göndərilir
Burada sevimli Pantheon xüsusiyyətimdən istifadə edəcəyik - multidevistəyə görə Git filialları üçün əlavə Panteon mühitləri yarada bilərsiniz.
Multidev-ə giriş məhduddur, buna görə də bu bölmə buraxıla bilər. Ancaq girişiniz varsa, GitLab birləşmə sorğularından Pantheon-da multidev mühitlərinin avtomatik yaradılmasını qurmaqla performansı ciddi şəkildə artıra bilərsiniz.
Əvvəlcə yerli olaraq yeni Git filialı yaradaq git checkout -b multidev-support. İndi nəyisə dəyişdirək .gitlab-ci.yml.
Mən birləşmə sorğu nömrəsini Pantheon mühitinin adına daxil etməyi xoşlayıram. Məsələn, ilk birləşmə sorğusu mr-1, ikinci - mr-2 və s.
Birləşmə sorğusu dəyişir, ona görə də biz Panteon filiallarının adlarını dinamik şəkildə müəyyən etməliyik. GitLab-da bu asandır - istifadə etməlisiniz əvvəlcədən təyin edilmiş mühit dəyişənləri.
götürə bilərik $CI_MERGE_REQUEST_IIDbirləşmə sorğu nömrəsini təyin etmək üçün. Gəlin bütün bunları əvvəllər qeyd etdiyimiz qlobal mühit dəyişənləri ilə birlikdə tətbiq edək və faylın sonuna yeni deploy:multidev tapşırığı əlavə edək. .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
Bu, bizim vəzifəmizə bənzəyəcək deploy:dev, yalnız filial Panteona gedir, yox master.
Biz yenilənmiş faylı əlavə etdik və təhvil verdik .gitlab-ci.yml, və indi GitLab-a yeni filial itələyin git push -u origin multidev-support.
İndi filialdan yeni birləşmə sorğusu yaradaq multidev-supporttıklayarak Birləşmə sorğusu yaradın.
Birləşmə sorğusu yaratdıqdan sonra CI / CD tapşırığının necə yerinə yetirildiyinə baxırıq deploy:multidev.
Baxın - Pantheona yeni filial göndərildi. Ancaq Pantheon saytının idarə panelindəki multidev bölməsinə keçsək, orada yeni mühiti görməyəcəyik.
Git Branches bölməsinə nəzər salaq.
Nəticədə filialımız mr-1 Panteona çatdı. Filialdan mühit yaradın mr-1.
Biz multidev mühiti yaratdıq, indi GitLab-a qayıdaq və bölməyə nəzər salaq Əməliyyatlar > Mühitlər. üçün girişləri görəcəyik dev и mr-1.
Bunun səbəbi biz bir giriş əlavə etmişik environment Adla name и url CI/CD tapşırıqlarına. Açıq mühit ikonasına klikləsək, Pantheon-da multidev mühitinin URL-inə keçəcəyik.
Multidev yaradılmasını avtomatlaşdırın
Prinsipcə, burada dayana bilərsiniz və sadəcə hər bir birləşmə sorğusu üçün multidev mühiti yaratmağı unutmayın, lakin bu proses avtomatlaşdırıla bilər.
Pantheon komanda xətti alətinə malikdir Dayanacaqplatforma ilə avtomatik işləyə biləcəyiniz yer. Terminus əmr satırından multidev mühitləri yaratmağa imkan verir - üçün mükəmməldir GitLab CI.
Bunu yoxlamaq üçün bizə yeni birləşmə sorğusu lazımdır. ilə yeni filial yaradın git checkout -b auto-multidev-creation.
GitLab CI/CD tapşırıqlarında Terminusdan istifadə etmək üçün sizə Terminus və Terminus konteyner şəkli ilə autentifikasiya etmək üçün maşın nişanı lazımdır.
Panteon maşın nişanının yaradılması, onu təhlükəsiz yerdə saxlayın və adı ilə GitLab-da qlobal mühit dəyişəni kimi əlavə edin PANTHEON_MACHINE_TOKEN.
GitLab mühit dəyişənlərini necə əlavə etməyi unutmusunuzsa, müəyyən etdiyimiz yerə qayıdın PANTHEON_SITE.
Terminus ilə Dockerfile yaradın
Docker-dən istifadə etmirsinizsə və ya faylları sevmirsinizsə Dockerfileşəklimi çək registry.gitlab.com/ataylorme/pantheon-gitlab-blog-demo:latest və bu bölməni keçin.
GitLab-da konteyner reyestri var, burada layihəmiz üçün Dockerfile qura və yerləşdirə bilərik. Pantheon ilə işləmək üçün Terminus ilə Dockerfile yaradaq.
Terminus PHP əmr xətti alətidir, ona görə də PHP şəkli ilə başlayaq. Terminusu Composer vasitəsilə quraşdırıram, ona görə də istifadə edəcəyəm rəsmi Docker Composer şəkli. Biz yaradırıq Dockerfile aşağıdakı məzmunla yerli repozitor kataloqunda:
# 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"
Bölmədən şəkillər qurmaq və göndərmək üçün təlimatlara əməl edin Şəkillər yaradın və itələyin в konteyner reyestrinin sənədləribir şəkil yığmaq üçün Dockerfile və GitLab-a təqdim edin.
Bölmənin açılması Reyestr GitLab layihəsində. Hər şey plana uyğun getsə, imicimiz orada olacaq. Şəkil etiketinə bir keçid yazın - fayl üçün bizə lazımdır .gitlab-ci.yml.
Bölmə script vəzifədə deploy:multidev böyüməyə başlayır, ona görə də onu ayrı bir fayla köçürək. Yeni fayl yaradın 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
Skript şəxsi kataloqdadır və Pantheona veb girişinə icazə vermir. Multidev məntiqimiz üçün skriptimiz var. İndi bölməni yeniləyək deploy:multidev fayl .gitlab-ci.ymlbelə görünməsi üçün:
Tapşırıqlarımızın yaradılmış xüsusi təsvirdə yerinə yetirildiyinə əmin olmalıyıq, ona görə də tərif əlavə edək image reyestr URL ilə .gitlab-ci.yml. Nəticədə belə bir faylımız var .gitlab-ci.yml:
Əlavə edin, təhvil verin və göndərin private/multidev-deploy.sh и .gitlab-ci.yml. İndi GitLab-a qayıdırıq və CI / CD tapşırığının tamamlanmasını gözləyirik. Səbirli olun: multidev yaratmaq bir neçə dəqiqə çəkə bilər.
Sonra Pantheon-da multidev siyahısına baxmağa gedirik. Ey möcüzə! multidev mühiti mr-2 artıq burda.
Nəticə
Birləşmə sorğularını açmağa və avtomatik mühit yaratmağa başlayanda komandam daha çox əyləndi.
GitLab və Pantheon-un güclü alətləri ilə siz GitLab-ı Pantheon-a avtomatik qoşa bilərsiniz.
GitLab CI/CD-dən istifadə etdiyimiz üçün iş axınımızın böyüməsi üçün yer olacaq. Sizə başlamaq üçün bir neçə fikir var:
Quraşdırma addımı əlavə edin.
Avtomatlaşdırılmış test əlavə edin.
Kod standartlarına əməl olunmasını təmin etmək üçün tapşırıq əlavə edin.
Panteonda biz 2-ci versiyada yaxşı iş gördük Terminus qurma alətləri üçün plagin GitLab dəstəyi ilə. Layihə üzrə quraşdırma ilə qarışmaq istəmirsinizsə, bu plaqini sınayın və v2 beta versiyasını sınamaqda bizə kömək edin. Terminus komandası üçün build:project:create sizə yalnız Pantheon tokeni və GitLab tokeni lazımdır. O, Composer və avtomatlaşdırılmış sınaq ilə nümunə layihələrdən birini yerləşdirəcək, yeni Pantheon saytı olan GitLab-da yeni layihə yaradacaq və ətraf mühit dəyişənləri və SSH açarlarından istifadə edərək onları birləşdirəcək.
Müəllif haqqında
Andrew Taylor proqramçılar üçün alətlər yaradır Panteon.