Како повезати ГитЛаб и Пантхеон и оптимизовати Друпал и ВордПресс радне токове

Како повезати ГитЛаб и Пантхеон и оптимизовати Друпал и ВордПресс радне токове
Наш гостујући креатор алата за програмере у Пантхеону говори о томе како да аутоматизујете примену ВордПресс-а користећи ГитЛаб ЦИ/ЦД.

В Пантеон Радим у односима са програмерима, тако да увек тражим нове начине да помогнем ВордПресс и Друпал програмерима да реше проблеме аутоматизације у својим токовима посла. Да бих то урадио, волим да експериментишем са новим алатима и комбинујем их једни са другима да би ефикасно радили.

Често видим програмере који се боре са једним сервером за постављање.

Задовољство је чекати ваш ред да користите посредни сервер или клијентима пошаљете УРЛ са напоменом: „Погледајте овде, али не гледајте још овде.“

Мултидев окружења - један од кул Пантхеон алата - решава овај проблем, јер помоћу њих можете креирати окружења за Гит гране на захтев. Свако мултидев окружење има сопствену УРЛ адресу и базу података, тако да програмери могу да раде тихо, провере квалитет и добију одобрење без да једни другима газе на прсте.

Али Пантхеон нема алате за контролу верзија или континуирану интеграцију и примену (ЦИ/ЦД). Али то је флексибилна платформа са којом можете интегрисати све алате.

Такође сам приметио да тимови користе одређене алате за развој, а различите за склапање и имплементацију.

На пример, имају различите алате за контролу верзија и ЦИ/ЦД. Морате петљати около и прелазити између алата да бисте уређивали код и дијагностиковали проблеме.

На ГитЛаб постоји читав скуп развојних алата: за контролу верзија, тикете, захтеве за спајање, најбољи у класи ЦИ/ЦД цевовод, регистар контејнера и све слично. Још нисам наишао на апликацију која нуди толико тога за управљање вашим развојним током.

Волим аутоматизацију, па сам научио како да повежем Пантхеон са ГитЛаб-ом тако да се обавезе за главну грану на ГитЛабу распореде у главно развојно окружење у Пантеону. А захтеви за спајање на ГитЛаб-у могу да креирају и примењују код у мултидев окружењима у Пантеону.

У овом туторијалу, провест ћу вас кроз како да подесите везу између ГитЛаб-а и Пантхеона и оптимизујете свој ВордПресс и Друпал радни ток.

Наравно да је могуће, огледало ГитЛаб спремиште, али ћемо све учинити својим рукама да се удубимо ГитЛаб ЦИ и убудуће користити овај алат не само за примену.

Увод

За овај пост, морате да разумете да Пантхеон сваку локацију дели на три елемента: код, базу података и датотеке.

Код укључује ЦМС датотеке као што су ВордПресс језгро, додаци и теме. Овим датотекама се управља у Гит спремишта, чији је домаћин Пантхеон, што значи да можемо да применимо код са ГитЛаба у Пантхеон помоћу Гита.
Датотеке у Пантеону су медијске датотеке, односно слике за сајт. Обично их отпремају корисници и Гит их игнорише.

Отворите бесплатан налог, сазнајте више о Пантхеон воркфлов или пријавите се за демо на пантхеон.ио.

Претпоставке

Мој пројекат на Пантеону и ГитЛабу се зове pantheon-gitlab-blog-demo. Назив пројекта мора бити јединствен. Овде ћемо радити са ВордПресс сајтом. Можете узети Друпал, али ћете морати да промените неке ствари.

Ја ћу користити Гит командна линијаи можете радити у графички интерфејс, ако желиш.

Креирајте пројекат

Прво, хајде да креирамо ГитЛаб пројекат (на ово ћемо се вратити касније).

Сада креирање ВордПресс веб странице на Пантеону. Затим инсталирамо ВордПресс за контролну таблу сајта.

Ако вас руке сврбе да нешто промените, на пример, уклоните или додате додатке, будите стрпљиви. Сајт још увек није повезан са ГитЛаб-ом и желимо да све промене кода пролазе кроз ГитЛаб.

Када инсталирамо ВордПресс, вратите се на контролну таблу Пантхеон веб странице и промените мод развоја у Гит.

Како повезати ГитЛаб и Пантхеон и оптимизовати Друпал и ВордПресс радне токове

Почетно урезивање на ГитЛабу

Сада морате да пренесете почетни ВордПресс код са Пантхеон сајта на ГитЛаб. Да бисмо то урадили, локално клонирамо код из Гит спремишта Пантхеон сајта, а затим га шаљемо у ГитЛаб спремиште.

Да би било лакше и безбедније, додајте ССХ кључ у Пантхеон и нећемо морати да уносимо лозинку сваки пут када клонирамо Пантхеон Гит репозиториј. У исто време већ додајте ССХ кључ у ГитЛаб.

Да бисте то урадили, клонирајте Пантхеон локацију локално тако што ћете копирати команду из поља Цлоне витх Гит на контролној табли сајта.

Како повезати ГитЛаб и Пантхеон и оптимизовати Друпал и ВордПресс радне токове
Ако вам је потребна помоћ, прочитајте документацију почетак рада са Гитом за Пантхеон.

Сада да се променимо git remote originда укаже на ГитЛаб уместо на Пантеон. То се може урадити командой git remote.

Идемо на ГитЛаб пројекат и копирамо УРЛ спремишта из падајућег менија Цлоне на страници са детаљима пројекта. Хајде да изаберемо опцију Цлоне витх ССХ, јер смо ССХ кључ већ конфигурисали.

Како повезати ГитЛаб и Пантхеон и оптимизовати Друпал и ВордПресс радне токове

Подразумевано git remote за локалну копију спремишта кодова - origin. Ово се може променити ц git remote set-url origin [URL репозитория GitLab], где уместо заграда уносимо стварни УРЛ.

Коначно, покрећемо git push origin master --forceда гурне ВордПресс код из Пантеона у ГитЛаб.

Опција –форце је потребна само једном. Затим у тимовима git push неће бити на ГитЛабу.

Подешавање акредитива и променљивих

Сећате се како смо локално додали ССХ кључ да бисмо се пријавили на Пантхеон и ГитЛаб? ССХ токен се може користити за ауторизацију ГитЛаба и Пантхеона.

ГитЛаб има одличну документацију. Хајде да видимо одељак о ССХ кључевима када користите Доцкер екецутор у документу о коришћењу ССХ кључева са ГитЛаб ЦИ/ЦД.

Сада ћемо завршити прва два корака: Хајде да креирамо нови пар ССХ кључева локално са ссх-кеиген и додамо приватни кључ као променљиву у пројекат.

Онда ћемо питати 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_GIT_URL. Ово је УРЛ Гит спремишта за Пантхеон локацију коју смо већ користили.

Унесите само УРЛ ССХ спремишта, без git clone и назив локације на машини на крају.

Фуј. То је готово, сада можемо да завршимо наш фајл .gitlab-ci.yml.

Креирајте задатак распоређивања

Оно што ћемо у почетку радити са ГитЛаб ЦИ веома је слично ономе што смо радили са Гит репозиторијумима у прошлости. Али овог пута, хајде да додамо Пантхеон репозиториј као други удаљени Гит извор, а затим гурнемо код из ГитЛаб-а у Пантхеон.

Да бисмо то урадили, хајде да конфигуришемо стаге deploy и задатак deploy:dev, јер ћемо се распоредити у развојно окружење на Пантеону. Добијена датотека .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 на ГитЛабу.

Провера примене

Ако смо све урадили како треба, задатак deploy:dev ће се успешно покренути у ГитЛаб ЦИ/ЦД и послати урезивање .gitlab-ci.yml у Пантеону. Хајде да погледамо.

Како повезати ГитЛаб и Пантхеон и оптимизовати Друпал и ВордПресс радне токове

Како повезати ГитЛаб и Пантхеон и оптимизовати Друпал и ВордПресс радне токове

Како повезати ГитЛаб и Пантхеон и оптимизовати Друпал и ВордПресс радне токове

Слање нити захтева за спајање Пантеону

Овде ћемо користити моју омиљену функцију Пантеона − мултидев, где можете да креирате додатна Пантхеон окружења за Гит гране на захтев.

Приступ мултидев је ограничен, тако да се овај одељак може прескочити. Али ако имате приступ, можете озбиљно повећати продуктивност подешавањем аутоматског креирања мултидев окружења на Пантхеону из ГитЛаб захтева за спајање.

Прво хајде да направимо нову Гит грану локално користећи git checkout -b multidev-support. А сада да поново нешто променимо .gitlab-ci.yml.

Волим да укључим број захтева за спајање у назив окружења Пантхеон. На пример, први захтев за спајање је mr-1, друго - mr-2 итд.

Захтев за спајање се мења, тако да морамо динамички да одредимо имена грана Пантеона. Лако је на ГитЛабу - само треба да користите унапред дефинисане променљиве окружења.

Можемо узети $CI_MERGE_REQUEST_IIDда одредите број захтева за спајање. Хајде да применимо све ово заједно са глобалним варијаблама окружења које смо раније навели и додамо нови задатак деплои:мултидев на крају датотеке .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, а сада хајде да гурнемо нову грану у ГитЛаб са git push -u origin multidev-support.

Сада направимо нови захтев за спајање из гране multidev-supportпритиском Креирајте захтев за спајање.

Како повезати ГитЛаб и Пантхеон и оптимизовати Друпал и ВордПресс радне токове

Након што смо креирали захтев за спајање, гледамо како се извршава ЦИ/ЦД задатак deploy:multidev.

Како повезати ГитЛаб и Пантхеон и оптимизовати Друпал и ВордПресс радне токове

Видите, нова тема је послата Пантеону. Али ако одемо у мултидев одељак на контролној табли Пантхеон сајта, тамо нећемо видети ново окружење

Како повезати ГитЛаб и Пантхеон и оптимизовати Друпал и ВордПресс радне токове

Хајде да погледамо одељак Гит Бранцх.

Како повезати ГитЛаб и Пантхеон и оптимизовати Друпал и ВордПресс радне токове

Као резултат, наша нит mr-1 стигао до Пантеона. Хајде да направимо окружење од гране mr-1.

Како повезати ГитЛаб и Пантхеон и оптимизовати Друпал и ВордПресс радне токове

Направили смо мултидев окружење, сада се вратимо на ГитЛаб и погледамо одељак Операције > Окружење. Видећемо уносе за dev и mr-1.

То је зато што смо додали унос environment Са именом name и url у ЦИ/ЦД задатке. Ако кликнемо на икону отвореног окружења, бићемо преусмерени на УРЛ мултидев окружења на Пантхеону.

Аутоматизујте креирање мултидев

У принципу, можете стати овде и само запамтити да креирате мултидев окружење за сваки захтев за спајање, али овај процес се може аутоматизовати.

Пантхеон има алат за командну линију Свршетак, где можете аутоматски да радите са платформом. Терминус вам омогућава да креирате мултидев окружења из командне линије - идеално за ГитЛаб ЦИ.

Потребан нам је нови захтев за спајање да бисмо ово тестирали. Креирајмо нову грану користећи git checkout -b auto-multidev-creation.

Да бисте користили Терминус у ГитЛаб ЦИ/ЦД задацима, потребан вам је машински токен за аутентификацију помоћу Терминуса и слика контејнера са Терминус-ом.

Креирање токена Пантхеон Мацхине, сачувајте га на безбедном месту и додајте га као глобалну променљиву окружења у ГитЛаб-у са именом PANTHEON_MACHINE_TOKEN.

Ако сте заборавили како да додате променљиве ГитЛаб окружења, вратите се тамо где смо дефинисали PANTHEON_SITE.

Креирање Доцкерфиле-а са Терминус-ом

Ако не користите Доцкер или не волите датотеке Dockerfile, узми моју слику registry.gitlab.com/ataylorme/pantheon-gitlab-blog-demo:latest и прескочите овај одељак.

ГитЛаб има регистар контејнера, где можемо да направимо и поставимо Доцкерфиле за наш пројекат. Хајде да направимо Доцкерфиле са Терминусом за рад са Пантхеоном.

Терминус је ПХП алатка командне линије, па почнимо са ПХП сликом. Терминус инсталирам преко Цомпосер-а, па ћу користити званична слика Доцкер Цомпосер-а. Ми стварамо 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-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 од УРЛ адресе регистра до .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. Сада се враћамо на ГитЛаб и чекамо да се ЦИ/ЦД задатак заврши. Будите стрпљиви: креирање мултидев-а може потрајати неколико минута.

Затим идемо да погледамо мултидев листу на Пантеону. Ох чудо! Мултидев окружење mr-2 већ овде.

Како повезати ГитЛаб и Пантхеон и оптимизовати Друпал и ВордПресс радне токове

Закључак

Мој тим се много више забавио када смо почели да отварамо захтеве за спајање и аутоматски креирамо окружења.

Са моћним алатима ГитЛаб-а и Пантхеон-а, можете аутоматски повезати ГитЛаб са Пантхеоном.

Пошто користимо ГитЛаб ЦИ/ЦД, наш ток посла ће имати простора за раст. Ево неколико идеја за почетак:

Реците нам шта мислите о ГитЛаб-у, Пантеону и аутоматизацији.

ПС Да ли сте знали да Терминус, Пантеонов алат командне линије, може се проширити преко додатака?

Ми у Пантхеону смо урадили добар посао на нашој верзији 2 додатак за алате за прављење Терминуса уз ГитЛаб подршку. Ако не желите да се мучите са подешавањима за сваки пројекат, испробајте овај додатак и помозите нам да тестирамо в2 бета. За екипу Терминуса build:project:create Потребан вам је само Пантхеон токен и ГитЛаб токен. Она ће применити један од примера пројеката са Цомпосер-ом и аутоматизованим тестирањем, креираће нови пројекат у ГитЛаб-у, новој Пантхеон локацији, и повезати их помоћу променљивих окружења и ССХ кључева.

О аутору

Андрев Таилор креира алате за програмере у Пантеон.

Извор: ввв.хабр.цом

Додај коментар