Hvernig á að tengja GitLab og Pantheon og fínstilla Drupal og WordPress vinnuflæði

Hvernig á að tengja GitLab og Pantheon og fínstilla Drupal og WordPress vinnuflæði
Höfundur gestahönnuðaverkfæra hjá Pantheon talar um hvernig eigi að gera sjálfvirkan WordPress uppsetningu með GitLab CI/CD.

В Pantheon Ég vinn í samskiptum þróunaraðila, svo ég er alltaf að leita að nýjum leiðum til að hjálpa WordPress og Drupal forriturum að leysa sjálfvirknivandamál í verkflæði sínu. Til að gera þetta finnst mér gaman að gera tilraunir með ný verkfæri og sameina þau hvert við annað til að virka á áhrifaríkan hátt.

Ég sé oft þróunaraðila í erfiðleikum með einn sviðsetningarþjón.

Það er svo ánægjulegt að bíða eftir að röðin komi að þér að nota millimiðlara eða senda viðskiptavinum vefslóð með athugasemdinni: „Sjáðu hér, en líttu ekki hingað ennþá.“

Multidev umhverfi - eitt af flottu Pantheon verkfærunum - leysir þetta vandamál, því með þeim er hægt að búa til umhverfi fyrir Git útibú á eftirspurn. Hvert multidev umhverfi hefur sína eigin vefslóð og gagnagrunn, þannig að forritarar geta unnið hljóðlega, athugað gæði og fengið samþykki án þess að stíga á tærnar hver á öðrum.

En Pantheon hefur ekki verkfæri fyrir útgáfustýringu eða samfellda samþættingu og uppsetningu (CI/CD). En það er sveigjanlegur vettvangur sem þú getur samþætt hvaða verkfæri sem er.

Ég tók líka eftir því að teymi nota ákveðin verkfæri til þróunar og mismunandi til samsetningar og dreifingar.

Til dæmis hafa þeir mismunandi verkfæri fyrir útgáfustýringu og CI/CD. Þú þarft að fikta og skipta á milli verkfæra til að breyta kóða og greina vandamál.

Á GitLab það er fullt sett af þróunarverkfærum: fyrir útgáfustýringu, miða, samrunabeiðnir, CI/CD leiðsla í flokki, gámaskrá og allt slíkt. Ég hef ekki enn rekist á forrit sem býður upp á svo mikið til að stjórna þróunarvinnuflæðinu þínu.

Ég elska sjálfvirkni, svo ég lærði hvernig á að tengja Pantheon við GitLab þannig að skuldbindingar til aðalútibúsins á GitLab séu sendar til aðalþróunarumhverfisins í Pantheon. Og samrunabeiðnir á GitLab geta búið til og dreift kóða í multidev umhverfi í Pantheon.

Í þessari kennslu mun ég leiða þig í gegnum hvernig á að setja upp tengingu milli GitLab og Pantheon og fínstilla WordPress og Drupal vinnuflæðið þitt.

Auðvitað er hægt, spegla GitLab geymslu, en við munum gera allt með höndum okkar til að kafa ofan í GitLab CI og í framtíðinni notaðu þetta tól ekki aðeins til dreifingar.

Inngangur

Fyrir þessa færslu þarftu að skilja að Pantheon skiptir hverri síðu niður í þrjá þætti: kóða, gagnagrunn og skrár.

Kóðinn inniheldur CMS skrár eins og WordPress kjarna, viðbætur og þemu. Þessum skrám er stjórnað í Git geymslur, hýst af Pantheon, sem þýðir að við getum sent kóða frá GitLab til Pantheon með Git.
Skrár í Pantheon eru fjölmiðlaskrár, það er myndir fyrir síðuna. Venjulega er þeim hlaðið upp af notendum og Git hunsar þá.

Búðu til ókeypis reikning, fáðu frekari upplýsingar um Pantheon vinnuflæði eða skráðu þig fyrir kynningu á pantheon.io.

Forsendur

Verkefnið mitt um Pantheon og GitLab heitir pantheon-gitlab-blog-demo. Heiti verkefnisins verður að vera einstakt. Hér verður unnið með WordPress síðu. Þú getur tekið Drupal, en þú þarft að breyta nokkrum hlutum.

Ég mun nota Git skipanalínaog þú getur unnið í grafísku viðmóti, ef þú vilt.

Búðu til verkefni

Fyrst skulum við búa til GitLab verkefni (við munum koma aftur að þessu síðar).

búa til WordPress vefsíðu á Pantheon. Síðan setjum við upp WordPress fyrir stjórnborð síðunnar.

Ef þér klæjar í hendurnar að breyta einhverju, til dæmis að fjarlægja eða bæta við viðbótum, vertu þolinmóður. Síðan er ekki enn tengd við GitLab og við viljum að allar kóðabreytingar fari í gegnum GitLab.

Þegar við höfum sett upp WordPress, farðu aftur á Pantheon vefsíðustjórnborðið og breyttu þróunarstillingunni í Git.

Hvernig á að tengja GitLab og Pantheon og fínstilla Drupal og WordPress vinnuflæði

Upphafleg skuldbinding á GitLab

Nú þarftu að flytja upphafs WordPress kóðann frá Pantheon síðunni til GitLab. Til að gera þetta klónum við kóðann úr Git geymslunni á Pantheon síðunni á staðnum og sendum hann síðan í GitLab geymsluna.

Til að gera það auðveldara og öruggara, bæta SSH lykli við Pantheon og við þurfum ekki að slá inn lykilorð í hvert skipti sem við klónum Pantheon Git geymslu. Á sama tíma nú þegar bættu SSH lykli við GitLab.

Til að gera þetta, klónaðu Pantheon síðuna á staðnum með því að afrita skipunina úr Clone with Git reitnum á stjórnborði síðunnar.

Hvernig á að tengja GitLab og Pantheon og fínstilla Drupal og WordPress vinnuflæði
Ef þú þarft hjálp skaltu lesa skjölin að byrja með Git fyrir Pantheon.

Nú skulum við breyta git remote originað benda á GitLab í stað Pantheon. Það er hægt að gera það командой git remote.

Við skulum fara í GitLab verkefnið og afrita slóð geymslunnar úr Clone fellilistanum á upplýsingasíðu verkefnisins. Við skulum velja Clone with SSH valkostinn, vegna þess að við höfum þegar stillt SSH lykilinn.

Hvernig á að tengja GitLab og Pantheon og fínstilla Drupal og WordPress vinnuflæði

Sjálfgefið git remote fyrir staðbundið afrit af kóðageymslunni - origin. Þessu er hægt að breyta c git remote set-url origin [URL репозитория GitLab], þar sem við sláum inn raunverulega vefslóðina í stað sviga.

Að lokum leggjum við af stað git push origin master --forcetil að ýta WordPress kóða frá Pantheon til GitLab.

– Force valkosturinn er aðeins nauðsynlegur einu sinni. Síðan í liðum git push það verður ekki á GitLab.

Að setja upp skilríki og breytur

Manstu hvernig við bættum við SSH lykli á staðnum til að skrá þig inn á Pantheon og GitLab? Hægt er að nota SSH táknið til að heimila GitLab og Pantheon.

GitLab hefur framúrskarandi skjöl. Látum okkur sjá kafla um SSH lykla þegar þú notar Docker executor í skjalinu um notkun SSH lykla með GitLab CI/CD.

Við munum nú ljúka fyrstu tveimur skrefunum: Við skulum búa til nýtt SSH lyklapar á staðnum með ssh-keygen og bæta einkalyklinum sem breytu við verkefnið.

Þá spyrjum við SSH_PRIVATE_KEY sem GitLab CI/CD umhverfisbreyta í verkefnastillingunum.
Í þriðja og fjórða skrefi munum við búa til skrá .gitlab-ci.yml með efni eins og þessu:

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"

Við skulum ekki skuldbinda skrána ennþá .gitlab-ci.yml, þá þarftu að bæta einhverju öðru við það.

Nú framkvæmum við fimmta skrefið og bættu opinbera lyklinum sem þú bjóst til í fyrsta skrefi við þjónustuna sem þú þarft aðgang að í byggingarumhverfinu.

Í okkar tilviki viljum við fá aðgang að Pantheon frá GitLab. Við fylgjum leiðbeiningunum í Pantheon skjalinu á að bæta SSH lykli við Pantheon og framkvæma þetta skref.

Mundu: einka SSH er í GitLab, opinn SSH er í Pantheon.

Við skulum setja upp nokkrar fleiri umhverfisbreytur. Sá fyrsti heitir PANTHEON_SITE. Gildi þess er nafn Pantheon-síðunnar á vélinni þinni.

Nafnið á vélinni er skráð í lok Clone with Git skipunarinnar. Þú hefur nú þegar klónað síðuna á staðnum, svo þetta verður nafnið á staðbundnu geymsluskránni.

Hvernig á að tengja GitLab og Pantheon og fínstilla Drupal og WordPress vinnuflæði

Næst skulum við setja upp umhverfisbreytuna PANTHEON_GIT_URL. Þetta er slóð Git geymslunnar fyrir Pantheon síðuna sem við höfum þegar notað.

Sláðu aðeins inn SSH geymsluslóðina, án git clone og nafn síðunnar á vélinni í lokin.

Púff. Það er búið, nú getum við klárað skrána okkar .gitlab-ci.yml.

Búðu til dreifingarverkefni

Það sem við munum í upphafi gera með GitLab CI er mjög svipað því sem við höfum gert með Git geymslum í fortíðinni. En í þetta skiptið skulum við bæta Pantheon geymslunni við sem annarri ytri Git uppsprettu og ýta síðan kóðanum frá GitLab til Pantheon.

Til að gera þetta skulum við stilla stigi deploy и verkefni deploy:dev, vegna þess að við munum dreifa til þróunarumhverfisins á Pantheon. Skráin sem myndast .gitlab-ci.yml mun líta svona út:

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

Variables SSH_PRIVATE_KEY, PANTHEON_SITE и PANTHEON_GIT_URL ætti að líta kunnuglega út - við settum upp þessar umhverfisbreytur fyrr. Með þessum breytum munum við geta notað gildin í skránni .gitlab-ci.yml mörgum sinnum og aðeins þarf að uppfæra þær á einum stað.

Að lokum skaltu bæta við, skuldbinda og senda skrána .gitlab-ci.yml á GitLab.

Athugar dreifinguna

Ef við gerðum allt rétt, verkefnið deploy:dev mun keyra með góðum árangri í GitLab CI/CD og leggja fram skuldbindingu .gitlab-ci.yml í Pantheon. Við skulum skoða.

Hvernig á að tengja GitLab og Pantheon og fínstilla Drupal og WordPress vinnuflæði

Hvernig á að tengja GitLab og Pantheon og fínstilla Drupal og WordPress vinnuflæði

Hvernig á að tengja GitLab og Pantheon og fínstilla Drupal og WordPress vinnuflæði

Sendir þræði um sameiningarbeiðni til Pantheon

Hér munum við nota uppáhalds Pantheon eiginleikann minn - multidev, þar sem þú getur búið til viðbótar Pantheon umhverfi fyrir Git útibú á eftirspurn.

Aðgangur að multidev er takmarkaður, þannig að hægt er að sleppa þessum kafla. En ef þú hefur aðgang geturðu aukið framleiðni verulega með því að setja upp sjálfvirka stofnun fjölþróunarumhverfis á Pantheon frá GitLab samrunabeiðnum.

Fyrst skulum við búa til nýja Git útibú á staðnum með því að nota git checkout -b multidev-support. Nú skulum við breyta einhverju aftur í .gitlab-ci.yml.

Mér finnst gaman að láta sameiningarbeiðnina fylgja með í Pantheon umhverfinu nafninu. Til dæmis er fyrsta sameiningarbeiðnin mr-1, annað - mr-2 o.s.frv.

Samrunabeiðnin breytist, þannig að við þurfum að ákvarða nöfn Pantheon útibúanna á virkan hátt. Það er auðvelt á GitLab - þú þarft bara að nota fyrirfram skilgreindar umhverfisbreytur.

Við getum tekið $CI_MERGE_REQUEST_IIDtil að tilgreina sameiningarbeiðninúmerið. Við skulum beita þessu öllu ásamt alþjóðlegu umhverfisbreytunum sem við tilgreindum áðan og bæta við nýju deploy:multidev verkefni í lok skrárinnar .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

Það verður svipað verkefni okkar deploy:dev, aðeins útibúið er sent til Pantheon, ekki til master.

Við höfum bætt við og framkvæmt uppfærðu skrána .gitlab-ci.yml, og nú skulum við ýta nýrri grein til GitLab með git push -u origin multidev-support.

Nú skulum við búa til nýja sameiningarbeiðni frá útibúinu multidev-supportmeð því að ýta á Búðu til sameiningarbeiðni.

Hvernig á að tengja GitLab og Pantheon og fínstilla Drupal og WordPress vinnuflæði

Eftir að hafa búið til sameiningarbeiðni skoðum við hvernig CI/CD verkefnið er framkvæmt deploy:multidev.

Hvernig á að tengja GitLab og Pantheon og fínstilla Drupal og WordPress vinnuflæði

Sko, nýr þráður hefur verið sendur til Pantheon. En ef við förum í multidev hlutann á Pantheon síðu mælaborðinu, munum við ekki sjá nýja umhverfið þar

Hvernig á að tengja GitLab og Pantheon og fínstilla Drupal og WordPress vinnuflæði

Við skulum skoða Git Branches hlutann.

Hvernig á að tengja GitLab og Pantheon og fínstilla Drupal og WordPress vinnuflæði

Þar af leiðandi þráðurinn okkar mr-1 kominn til Pantheon. Búum til umhverfi úr grein mr-1.

Hvernig á að tengja GitLab og Pantheon og fínstilla Drupal og WordPress vinnuflæði

Við höfum búið til multidev umhverfi, nú skulum við fara aftur í GitLab og skoða hlutann Rekstur > Umhverfi. Við munum sjá færslur fyrir dev и mr-1.

Þetta er vegna þess að við bættum við færslu environment Með nafni name и url í CI/CD verkefni. Ef við smellum á opna umhverfistáknið munum við fara á slóð multidev umhverfisins á Pantheon.

Gerðu sjálfvirkan sköpun multidev

Í grundvallaratriðum geturðu hætt hér og muna bara eftir að búa til multidev umhverfi fyrir hverja samrunabeiðni, en þetta ferli er hægt að gera sjálfvirkt.

Pantheon er með skipanalínuverkfæri Terminus, þar sem þú getur unnið sjálfkrafa með pallinn. Terminus gerir þér kleift að búa til multidev umhverfi frá skipanalínunni - tilvalið fyrir GitLab CI.

Við þurfum nýja sameiningarbeiðni til að prófa þetta. Við skulum búa til nýja útibú með því að nota git checkout -b auto-multidev-creation.

Til að nota Terminus í GitLab CI/CD verkefnum þarftu vélamerki fyrir auðkenningu með Terminus og gámamynd með Terminus.

Að búa til Pantheon Machine Token, vistaðu það á öruggum stað og bættu því við sem alþjóðlegri umhverfisbreytu í GitLab með nafninu PANTHEON_MACHINE_TOKEN.

Ef þú hefur gleymt hvernig á að bæta við GitLab umhverfisbreytum skaltu fara aftur þangað sem við skilgreindum PANTHEON_SITE.

Að búa til Dockerfile með Terminus

Ef þú notar ekki Docker eða líkar ekki við skrár Dockerfile, taktu myndina mína registry.gitlab.com/ataylorme/pantheon-gitlab-blog-demo:latest og slepptu þessum kafla.

GitLab er með gámaskrá, þar sem við getum byggt og sett Dockerfile fyrir verkefnið okkar. Við skulum búa til Dockerfile með Terminus til að vinna með Pantheon.

Terminus er PHP skipanalínuverkfæri, svo við skulum byrja á PHP myndinni. Ég er að setja upp Terminus í gegnum Composer, svo ég mun nota opinber Docker Composer mynd. Við sköpum Dockerfile í staðbundinni geymsluskrá með eftirfarandi efni:

# 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"

Fylgdu leiðbeiningunum um að setja saman og senda myndir úr hlutanum Búðu til og ýttu á myndir в gámaskrárskjöltil að safna mynd frá Dockerfile og ýttu því í GitLab.

Að opna hlutann Registry í GitLab verkefninu. Ef allt gekk að óskum verður ímynd okkar til staðar. Skrifaðu niður tengil á myndamerkið - við þurfum það fyrir skrána .gitlab-ci.yml.

Hvernig á að tengja GitLab og Pantheon og fínstilla Drupal og WordPress vinnuflæði

Kafli script í vandanum deploy:multidev er farin að stækka, svo við skulum færa það í sérstaka skrá. Búðu til nýja skrá 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

Handritið er í einkaskrá og leyfir ekki vefaðgang að Pantheon. Við höfum handrit fyrir multidev rökfræði okkar. Við skulum nú uppfæra kaflann deploy:multidev skrá .gitlab-ci.ymlþannig að þetta kemur svona út:

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

Við þurfum að ganga úr skugga um að verkefni okkar séu unnin í sérsniðnu myndinni, svo við skulum bæta við skilgreiningu image frá vefslóð skrásetningar til .gitlab-ci.yml. Fyrir vikið enduðum við með svona skrá .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

Bæta við, skuldbinda og senda private/multidev-deploy.sh и .gitlab-ci.yml. Nú snúum við aftur til GitLab og bíðum eftir að CI/CD verkefninu ljúki. Vertu þolinmóður: multidev getur tekið nokkrar mínútur að búa til.

Svo förum við að skoða multidev listann á Pantheon. Ó kraftaverk! Multidev umhverfi mr-2 þegar hér.

Hvernig á að tengja GitLab og Pantheon og fínstilla Drupal og WordPress vinnuflæði

Ályktun

Liðið mitt skemmti sér miklu betur þegar við byrjuðum að opna sameiningarbeiðnir og búa til umhverfi sjálfkrafa.

Með öflugum verkfærum GitLab og Pantheon geturðu tengt GitLab við Pantheon sjálfkrafa.

Þar sem við notum GitLab CI/CD mun vinnuflæðið okkar hafa pláss til að vaxa. Hér eru nokkrar hugmyndir til að koma þér af stað:

  • Bættu við byggingarstigi.
  • Bættu við sjálfvirkum prófunum.
  • Bættu við verkefni til að tryggja að kóðastaðlar séu uppfylltir.
  • Bæta við kraftmikla öryggisprófun forrita.

Láttu mig vita hvað þér finnst um GitLab, Pantheon og sjálfvirkni.

PS Vissir þú að Terminus, skipanalínuverkfæri Pantheon, hægt að útvíkka með viðbótum?

Við hjá Pantheon höfum unnið gott starf í útgáfu 2 af okkar viðbót fyrir Terminus smíðaverkfæri með GitLab stuðningi. Ef þú vilt ekki skipta þér af stillingum fyrir hvert verkefni, prófaðu þessa viðbót og hjálpaðu okkur að prófa v2 beta. Fyrir Terminus liðið build:project:create Þú þarft aðeins Pantheon tákn og GitLab tákn. Hún mun senda inn eitt af sýnishornsverkefnunum með Composer og sjálfvirkum prófunum, búa til nýtt verkefni í GitLab, nýrri Pantheon síðu, og tengja þau með umhverfisbreytum og SSH lyklum.

Um höfundinn

Andrew Taylor býr til verkfæri fyrir forritara í Pantheon.

Heimild: www.habr.com

Bæta við athugasemd