Kuidas ühendada GitLabi ja Pantheoni ning optimeerida Drupali ja WordPressi töövooge

Kuidas ühendada GitLabi ja Pantheoni ning optimeerida Drupali ja WordPressi töövooge
Meie külalisarendaja tööriistade looja Pantheonis räägib, kuidas automatiseerida WordPressi juurutamist GitLab CI/CD abil.

В Panteon Töötan arendajasuhete alal, seega otsin alati uusi viise, kuidas aidata WordPressi ja Drupali arendajatel oma töövoogude automatiseerimisprobleeme lahendada. Selleks meeldib mulle katsetada uusi tööriistu ja neid omavahel kombineerida, et tõhusalt töötada.

Näen sageli, et arendajad on hädas ühe lavastusserveriga.

Nii tore on oodata oma järjekorda, et kasutada vaheserverit või saata klientidele URL-i märge: "Vaadake siit, aga ärge veel vaadake siia."

Multidevi keskkonnad - üks lahedaid Pantheoni tööriistu - lahendab selle probleemi, sest nendega saate nõudmisel luua keskkondi Giti filiaalidele. Igal multidevi keskkonnal on oma URL ja andmebaas, et arendajad saaksid vaikselt töötada, kvaliteeti kontrollida ja heakskiitu saada ilma üksteisele käppa astumata.

Kuid Pantheonil pole tööriistu versioonikontrolliks ega pidevaks integreerimiseks ja juurutamiseks (CI/CD). Kuid see on paindlik platvorm, millega saate integreerida mis tahes tööriistu.

Samuti märkasin, et meeskonnad kasutavad arenduseks teatud tööriistu ning komplekteerimiseks ja juurutamiseks erinevaid.

Näiteks on neil erinevad tööriistad versioonikontrolli ja CI/CD jaoks. Koodi redigeerimiseks ja probleemide diagnoosimiseks peate ringi sebima ja tööriistu vahetama.

Edasi GitLab Seal on täielik komplekt arendustööriistu: versioonihaldus, piletid, liitmistaotlused, oma klassi parim CI/CD torujuhe, konteineri register ja kõik muu selline. Ma pole veel kohanud rakendust, mis pakuks nii palju teie arendustöövoo haldamiseks.

Mulle meeldib automatiseerimine, nii et õppisin ühendama Pantheoni GitLabiga, nii et GitLabi põhiharu kohustused rakendatakse Pantheoni peamises arenduskeskkonnas. Ja GitLabi liitmistaotlused saavad luua ja juurutada koodi Pantheoni multidevi keskkondades.

Selles õpetuses tutvustan teile, kuidas luua ühendus GitLabi ja Pantheoni vahel ning optimeerida oma WordPressi ja Drupali töövoogu.

Muidugi on võimalik, peegel GitLabi hoidla, kuid me teeme kõik oma kätega, et sellesse süveneda GitLab CI ja tulevikus kasutage seda tööriista mitte ainult juurutamiseks.

Sissejuhatus

Selle postituse jaoks peate mõistma, et Pantheon jagab iga saidi kolmeks elemendiks: kood, andmebaas ja failid.

Kood sisaldab CMS-faile, nagu WordPressi tuum, pistikprogramme ja teemasid. Neid faile hallatakse Giti hoidlad, mida hostib Pantheon, mis tähendab, et saame GitLabiga GitLabist Pantheoni koodi juurutada.
Pantheonis olevad failid on meediumifailid, st saidi pildid. Tavaliselt laadivad need üles kasutajad ja Git ignoreerib neid.

Looge tasuta konto, uuri lähemalt Pantheoni töövoog või registreeruge demo jaoks saidil pantheon.io.

Eeldused

Minu projekt Pantheonis ja GitLabis kannab nime pantheon-gitlab-blog-demo. Projekti nimi peab olema kordumatu. Siin töötame WordPressi saidiga. Võite võtta Drupali, kuid peate mõnda asja muutma.

ma kasutan Git käsuridaja saate sisse töötada graafiline liides, kui sa tahad.

Loo projekt

Esiteks loome GitLabi projekt (tuleme selle juurde hiljem tagasi).

Nüüd jagab ta WordPressi veebisaidi loomine Pantheonis. Seejärel installime saidi armatuurlauale WordPressi.

Kui teie käed sügelevad, et midagi muuta, näiteks eemaldada või lisada pluginaid, olge kannatlik. Sait pole veel GitLabiga ühendatud ja me tahame, et kõik koodimuudatused toimuksid GitLabi kaudu.

Kui oleme WordPressi installinud, minge tagasi Pantheoni veebisaidi juhtpaneelile ja muutke arendusrežiimiks Git.

Kuidas ühendada GitLabi ja Pantheoni ning optimeerida Drupali ja WordPressi töövooge

Esialgne sidumine GitLabis

Nüüd peate esialgse WordPressi koodi Pantheoni saidilt GitLabi üle kandma. Selleks kloonime Pantheoni saidi Giti hoidlast pärit koodi lokaalselt ja saadame selle seejärel GitLabi hoidlasse.

Et see oleks lihtsam ja turvalisem, lisage Pantheoni SSH-võti ja me ei pea sisestama parooli iga kord, kui kloonime Pantheon Giti hoidla. Samal ajal juba lisage GitLabi SSH-võti.

Selleks kloonige Pantheoni veebisait lokaalselt, kopeerides käsu veebisaidi armatuurlaua väljalt Clone with Git.

Kuidas ühendada GitLabi ja Pantheoni ning optimeerida Drupali ja WordPressi töövooge
Kui vajate abi, lugege dokumentatsiooni Git for Pantheon alustamiseks.

Nüüd muudame git remote originosutada Pantheoni asemel GitLabile. Seda saab teha командой git remote.

Läheme projekti GitLabi juurde ja kopeerime hoidla URL projekti üksikasjade lehel olevast rippmenüüst Kloonimine. Valime võimaluse Kloonida SSH-ga, sest SSH-võtme on meil juba konfigureeritud.

Kuidas ühendada GitLabi ja Pantheoni ning optimeerida Drupali ja WordPressi töövooge

Vaikimisi git remote koodihoidla kohaliku koopia jaoks - origin. Seda saab muuta c git remote set-url origin [URL репозитория GitLab], kus sulgude asemel sisestame tegeliku URL-i.

Lõpuks käivitame git push origin master --forceWordPressi koodi lükkamiseks Pantheonist GitLabi.

Valik –force on vajalik ainult üks kord. Siis meeskondades git push see ei ole GitLabis.

Mandaatide ja muutujate seadistamine

Kas mäletate, kuidas lisasime Pantheoni ja GitLabi sisselogimiseks kohapeal SSH-võtme? SSH-märki saab kasutada GitLabi ja Pantheoni autoriseerimiseks.

GitLabil on suurepärane dokumentatsioon. Vaatame jaotis SSH-võtmete kohta Dockeri täituri kasutamisel dokumendis SSH-võtmete kasutamise kohta GitLabi CI/CD-ga.

Nüüd teeme kaks esimest sammu: Loome uue SSH võtmepaari lokaalselt ssh-keygeniga ja lisame privaatvõtme muutujana projekti.

Siis me küsime SSH_PRIVATE_KEY kui GitLabi CI/CD keskkonnamuutuja projekti seadetes.
Kolmandas ja neljandas etapis loome faili .gitlab-ci.yml sellise sisuga:

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"

Ärgem faili veel kinnistame .gitlab-ci.yml, siis peate sellele midagi muud lisama.

Nüüd teostame viienda sammu ja lisage esimeses etapis loodud avalik võti teenustele, millele vajate ehituskeskkonnas juurdepääsu.

Meie puhul tahame Pantheoni juurde pääseda GitLabist. Järgime Pantheoni dokumendis toodud juhiseid SSH-võtme lisamine Pantheoni ja sooritage see samm.

Pidage meeles: privaatne SSH on GitLabis, avatud SSH on Pantheonis.

Seadistame veel mõned keskkonnamuutujad. Esimese nimi on PANTHEON_SITE. Selle väärtus on teie masinas oleva Pantheoni saidi nimi.

Masina nimi on loetletud käsu Clone with Git lõpus. Olete saidi juba kohapeal klooninud, nii et see on kohaliku hoidla kataloogi nimi.

Kuidas ühendada GitLabi ja Pantheoni ning optimeerida Drupali ja WordPressi töövooge

Järgmisena seadistame keskkonnamuutuja PANTHEON_GIT_URL. See on Giti hoidla URL Pantheoni saidi jaoks, mida oleme juba kasutanud.

Sisestage ainult SSH-hoidla URL, ilma git clone ja masina lõpus oleva saidi nimi.

Pheh. See on tehtud, nüüd saame faili lõpetada .gitlab-ci.yml.

Looge juurutusülesanne

See, mida me algselt GitLabi CI-ga teeme, on väga sarnane sellega, mida oleme varem Git-hoidlate puhul teinud. Kuid seekord lisame Pantheoni hoidla teise Giti kaugallikana ja seejärel lükkame koodi GitLabist Pantheoni.

Selleks konfigureerime etapp deploy и ülesanne deploy:dev, sest juurutame Pantheoni arenduskeskkonda. Saadud fail .gitlab-ci.yml näeb välja selline:

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

Muutujad SSH_PRIVATE_KEY, PANTHEON_SITE и PANTHEON_GIT_URL peaks tunduma tuttav – me seadistasime need keskkonnamuutujad varem. Nende muutujate abil saame kasutada failis olevaid väärtusi .gitlab-ci.yml mitu korda ja neid tuleb värskendada ainult ühes kohas.

Lõpuks lisage, kinnitage ja saatke fail .gitlab-ci.yml GitLabis.

Kasutuselevõtu kontrollimine

Kui tegime kõik õigesti, siis ülesanne deploy:dev töötab edukalt GitLabi CI/CD-s ja esitab kohustuse .gitlab-ci.yml Pantheonis. Vaatame.

Kuidas ühendada GitLabi ja Pantheoni ning optimeerida Drupali ja WordPressi töövooge

Kuidas ühendada GitLabi ja Pantheoni ning optimeerida Drupali ja WordPressi töövooge

Kuidas ühendada GitLabi ja Pantheoni ning optimeerida Drupali ja WordPressi töövooge

Pantheoni ühendamistaotluste lõimede saatmine

Siin kasutame minu lemmik Pantheoni funktsiooni − multidev, kus saate Giti filiaalide jaoks nõudmisel luua täiendavaid Pantheoni keskkondi.

Juurdepääs multidevile on piiratud, nii et selle jaotise võib vahele jätta. Kuid kui teil on juurdepääs, saate tootlikkust tõsiselt tõsta, seadistades Pantheonis GitLabi liitmistaotluste põhjal multidevi keskkondade automaatse loomise.

Esmalt teeme uue Giti filiaali kohalikult kasutades git checkout -b multidev-support. Nüüd muudame jälle midagi .gitlab-ci.yml.

Mulle meeldib lisada Pantheoni keskkonna nimesse liitmistaotluse number. Näiteks esimene liitmistaotlus on mr-1, teine ​​- mr-2 jne.

Ühinemistaotlus muutub, seega peame Pantheoni harude nimed dünaamiliselt määrama. GitLabis on see lihtne – peate lihtsalt kasutama etteantud keskkonnamuutujad.

Võime võtta $CI_MERGE_REQUEST_IIDühendamistaotluse numbri täpsustamiseks. Rakendame seda kõike koos varem määratud globaalsete keskkonnamuutujatega ja lisame faili lõppu uue ülesande 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

See on sarnane meie ülesandega deploy:dev, Pantheoni saadetakse ainult filiaal, mitte master.

Oleme värskendatud faili lisanud ja sidunud .gitlab-ci.yml, ja nüüd lükkame GitLabi uue haru koos git push -u origin multidev-support.

Nüüd loome filiaalist uue liitmistaotluse multidev-supportklikkides Loo liitmistaotlus.

Kuidas ühendada GitLabi ja Pantheoni ning optimeerida Drupali ja WordPressi töövooge

Pärast ühendamistaotluse loomist vaatame, kuidas CI/CD ülesanne täidetakse deploy:multidev.

Kuidas ühendada GitLabi ja Pantheoni ning optimeerida Drupali ja WordPressi töövooge

Vaata, uus lõim on saadetud Pantheoni. Kuid kui läheme Pantheoni saidi armatuurlaua multidevi jaotisesse, ei näe me seal uut keskkonda

Kuidas ühendada GitLabi ja Pantheoni ning optimeerida Drupali ja WordPressi töövooge

Vaatame Git Branchesi jaotist.

Kuidas ühendada GitLabi ja Pantheoni ning optimeerida Drupali ja WordPressi töövooge

Selle tulemusena meie niit mr-1 jõudis Pantheoni. Loome oksast keskkonna mr-1.

Kuidas ühendada GitLabi ja Pantheoni ning optimeerida Drupali ja WordPressi töövooge

Oleme loonud multidevi keskkonna, nüüd läheme tagasi GitLabi ja vaatame jaotist Toimingud > Keskkonnad. Näeme kirjeid dev и mr-1.

Seda seetõttu, et lisasime kirje environment Nimega name и url CI/CD ülesannetesse. Kui klõpsame avatud keskkonna ikoonil, suunatakse meid Pantheoni multidevi keskkonna URL-ile.

Automatiseerige multidevi loomine

Põhimõtteliselt võite siin peatuda ja pidage meeles, et peate iga liitmistaotluse jaoks looma multidevi keskkonna, kuid seda protsessi saab automatiseerida.

Pantheonil on käsurea tööriist Lõppjaam, kus saate platvormiga automaatselt töötada. Terminus võimaldab teil käsurealt luua multidevi keskkondi – ideaalne GitLab CI.

Selle testimiseks vajame uut liitmistaotlust. Loome uue haru kasutades git checkout -b auto-multidev-creation.

Terminuse kasutamiseks GitLabi CI/CD-ülesannetes vajate Terminusega autentimiseks masinaluba ja Terminusega konteineri kujutist.

Pantheoni masina märgi loomine, salvestage see kindlasse kohta ja lisage see globaalse keskkonnamuutujana GitLabis koos nimega PANTHEON_MACHINE_TOKEN.

Kui unustasite, kuidas GitLabi keskkonnamuutujaid lisada, minge tagasi sinna, kus me määratlesime PANTHEON_SITE.

Dockeri faili loomine terminaliga

Kui te ei kasuta Dockerit või teile ei meeldi failid Dockerfile, võta minu pilt registry.gitlab.com/ataylorme/pantheon-gitlab-blog-demo:latest ja jätke see osa vahele.

GitLabil on konteineri register, kus saame oma projekti jaoks Dockerfile'i luua ja paigutada. Loome Pantheoniga töötamiseks terminaliga Dockerfile'i.

Terminus on PHP käsurea tööriist, seega alustame PHP pildiga. Installin Terminusi läbi Composeri, seega kasutan ametlik Dockeri helilooja pilt. Meie loome Dockerfile kohalikus hoidlakataloogis järgmise sisuga:

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

Järgige jaotises olevate piltide kokkupanemise ja saatmise juhiseid Ehitage ja lükake pilte в konteineri registri dokumentatsioonpildi kogumiseks Dockerfile ja lükake see GitLabi.

Sektsiooni avamine registri GitLabi projektis. Kui kõik läks plaanipäraselt, on meie kuvand olemas. Kirjutage üles pildisildi link – vajame seda faili jaoks .gitlab-ci.yml.

Kuidas ühendada GitLabi ja Pantheoni ning optimeerida Drupali ja WordPressi töövooge

Lõik script probleemis deploy:multidev hakkab kasvama, nii et teisaldame selle eraldi faili. Looge uus fail 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 on privaatses kataloogis ja ei võimalda veebijuurdepääsu Pantheonile. Meil on oma multidevi loogika jaoks skript. Uuendame nüüd jaotist deploy:multidev faili .gitlab-ci.ymlet see kujuneks välja selline:

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

Peame veenduma, et meie ülesanded täidetakse loodud kohandatud pildil, seega lisame definitsiooni image registri URL-ist aadressile .gitlab-ci.yml. Selle tulemusel jõudsime sellise failini .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

Lisage, siduge ja saatke private/multidev-deploy.sh и .gitlab-ci.yml. Nüüd pöördume tagasi GitLabi ja ootame, kuni CI/CD ülesanne on lõpule viidud. Olge kannatlik: multidevi loomiseks võib kuluda mitu minutit.

Seejärel vaatame Pantheoni multidevi nimekirja. Oh imet! Multidevi keskkond mr-2 juba siin.

Kuidas ühendada GitLabi ja Pantheoni ning optimeerida Drupali ja WordPressi töövooge

Järeldus

Minu meeskonnal oli palju lõbusam, kui hakkasime ühendamistaotlusi avama ja keskkondi automaatselt looma.

GitLabi ja Pantheoni võimsate tööriistade abil saate GitLabi automaatselt Pantheoniga ühendada.

Kuna kasutame GitLabi CI/CD-d, on meie töövool ruumi areneda. Siin on paar ideed alustamiseks:

Andke mulle teada, mida arvate GitLabist, Pantheonist ja automatiseerimisest.

PS Kas teadsite, et Terminus, Pantheoni käsurea tööriist, saab laiendada pluginate kaudu?

Meie Pantheonis oleme oma versiooni 2 kallal head tööd teinud Terminuse ehitustööriistade pistikprogramm GitLabi toega. Kui te ei soovi iga projekti seadetega vaeva näha, proovige seda pistikprogrammi ja aidake meil testida v2 beetaversiooni. Terminuse meeskonna jaoks build:project:create Teil on vaja ainult Pantheoni ja GitLabi märki. Ta juurutab ühe näidisprojektidest koos Composeri ja automatiseeritud testimisega, loob GitLabis uue projekti, uue Pantheoni saidi, ning ühendab need keskkonnamuutujate ja SSH-võtmete abil.

Teave Autor

Andrew Taylor loob tööriistu arendajatele Panteon.

Allikas: www.habr.com

Lisa kommentaar